Preface
Advanced language features
- Implicit parameters
- Implicit conversions
- Type erasure and type tags
- Existential types
- Type classes
- Using Simulacrum
Exploring ScalaZ
- ScalaZ disjunctions
- ScalaZ Task
- ScalaZ Actor
Exploring Cats
- Categories
- Monoids
- Functors
- Monads
- Monad transformers
- Id
- Eval
- Reader
- Kleisli
- Writer
- State
- Free monads
- Applicative
- Validated
Dealing with side effects
- The standard Future
- The ScalaZ Task
- The Cats IO monad
- Thread shifting
Understanding iteratees
- Iteratees, enumeratees and enumerators
- Building simple transformations
- Using iteratees with Eval
- Analyzing texts with iteratees
Working with asynchronous code
- Using Monix
- Coeval
- Monix Task
- Observable
Lenses and other optics
- Iso
- Prism
- Lens
- Optional
Stream processing
- Pure streams
- Effectful streams
- Pipes and sinks
- Text processing with streams
Working with JSON
- Using Circe
- Encoding
- Decoding
- Parsing and navigating
Generic programming with Shapeless
- HList
- The Aux technique
- HList operations
- Product types
- Coproducts
- Generic
- Generic codec derivation
- Abstracting over arity
Purely functional HTTP services
- HTTP server as a pure function
- http4s
- Finch
Database access with doobie
- Simple queries
- Selecting multiple columns
- Using connection pools