- Introduction to Higher-Kinded-J
- Getting Started
- 1. HKT Introduction
❱
- 1.1. Concepts
- 1.2. Usage Guide
- 1.3. Basic HKT Examples
- 1.4. Quick Reference
- 1.5. Extending
- Type Classes
- 2. Functional Api
❱
- 2.1. Functor
- 2.2. Applicative
- 2.3. Alternative
- 2.4. Monad
- 2.5. MonadError
- 2.6. Semigroup and Monoid
- 2.7. Foldable and Traverse
- 2.8. MonadZero
- 2.9. Selective
- 2.10. Profunctor
- 2.11. Bifunctor
- 2.12. For Comprehension
- Monads in Practice
- 3. Supported Types
❱
- 3.1. CompletableFuture
- 3.2. Either
- 3.3. Identity
- 3.4. IO
- 3.5. Lazy
- 3.6. List
- 3.7. Maybe
- 3.8. Optional
- 3.9. Reader
- 3.10. State
- 3.11. Stream
- 3.12. Trampoline
- 3.13. Free
- 3.14. Try
- 3.15. Validated
- 3.16. Writer
- 3.17. Const
- Advanced Topics
- 4. Monad Transformers
❱
- 4.1. EitherT
- 4.2. OptionalT
- 4.3. MaybeT
- 4.4. ReaderT
- 4.5. StateT
- Complete HKT Examples
- 5. An Order Workflow
- 6. Draughts Game
- Optics
- 7. Optics Introduction
❱
- 7.1. Lenses
- 7.2. Prisms
- 7.3. Advanced Prism Patterns
- 7.4. Isomorphisms
- 7.5. Traversals
- 7.6. Folds
- 7.7. Filtered Optics
- 7.8. Indexed Optics
- 7.9. Limiting Traversals
- 7.10. Getters
- 7.11. Setters
- 7.12. At Type Class
- 7.13. Ixed Type Class
- 7.14. Profunctor Optics
- 7.15. Combining Optics - Validation
- 7.16. Fluent API for Optics
- 7.17. Free Monad DSL
- 7.18. Optic Interpreters
- 7.19. Practical Examples
- 7.20. Auditing Complex Data - The Power of Optics
- 7.21. Working with Core Types and Optics
❱
- 7.21.1. Core Type Prisms
- 7.21.2. Lens Extensions
- 7.21.3. Traversal Extensions
- More Functional Thinking
- 8. Blog series
- Glossary
- 9. Functional Programming Terminology
- Project Info
- 10. Contributing
- 11. Code of Conduct
- 12. License