- Generalized algebraic data type
- Higher-kinded types
- Rank-N types
- Folds and unfolds
- Higher-order abstractions (category, functor, monad)
- Basic optics
- Implement efficient persistent data structures
- Existential types
- Embedded DSLs using combinators
|
- Able to implement large functional programming applications
- Test code using generators and properties
- Write imperative code in a purely functional way through monads
- Use popular purely functional libraries to solve business problems
- Separate decision from effects
- Write a simple custom lawful monad
- Write production medium-sized projects
- Use lenses and prisms to manipulate ...
|