Table of Contents
- 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 Eithers
- A collection of Either examples compared to imperative code
- Create types with Semigroups
- Semigroup examples
- Ensure failsafe combination using monoids
- A curated collection of Monoids and their uses
- Unbox types with foldMap
- Delay Evaluation with LazyBox
- Capture Side Effects in a Task
- Use Task for Asynchronous Actions
- You've 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
- Write 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
- Build a data flow for a real world app
- Retrieve and use data from an api with pure functional constructs
- Find the intersection of sets with Semigroups