- Algebraic data types
- Pattern matching
- Parametric polymorphism
- General recursion
- Type classes, instances, and laws
- Lower-order abstractions (equal, semigroup, monoid, and so on)
- Referential transparency and totality
- Higher-order functions
- Partial application, currying, and point-free style
|
- Solve problems without nulls, exceptions, or type casts
- Process and transform recursive data structures using recursion
- Able to use functional programming in the small
- Write basic monadic code for a concrete monad
- Create type class instances for custom data types
- Model a business domain with abstract data types (
|