- Create linear data flow with container style types (Box)
- Refactor imperative code to a single composed expression using Box
- Enforce a null check with composable code branching using Either
- Use chain for composable error handling with nested Either
- Examples of Either in comparison with imperative code
- Create types with Semigroups
- Semigroup examples
- Ensure failsafe combination using Monoids
- Monoid examples
- Unibox types with foldMap
- Delay evaluation with LazyBox
- Capture side effects in a Task
- Use Task for Asynchronous Actions
- You have been using Functors
- Lift into a pointed Functor with of
- You've been using Monads
- Build curried functions
- Applicative Functors for multiple arguments
- Apply multiple Functors as arguments to a function (Applicatives)
- List comprehensions with Applicative Functors
- Applicatives for concurrent actions
- Leapfrogging types with Traversable
- Maintaining structure whilst asyncing
- Principled type conversions with Natural Transformations
- Apply Natural Transformations in everyday work
- Isomorphisms and round trip data transformations
- Execute using
node <filename>