Functional Programming
Isolating Impurity
The Functional Core, Imperative Shell Pattern
Encapsulating Effects with Monads
Effect Systems
Dependency Injection Patterns
Using Maybe Types
Using Either Types
Composing Error-Handling Functions
Recovering from Errors
Error Accumulation
Validation Patterns
Futures and Promises as Functional Constructs
Composing Asynchronous Computations
Error Handling in Asynchronous Contexts
Async Monads
Reactive Programming Patterns
Passing State Explicitly
Using the State Monad
Modeling State Transitions
Immutable State Updates
Event Sourcing
CQRS Patterns
Map-Reduce
Pipelines
Actors and Message Passing
Software Transactional Memory
Pure Functions and Module Boundaries
Dependency Injection via Functions
Layered Architectures
Hexagonal Architecture
Domain-Driven Design with Functional Programming
Module Systems
Making Illegal States Unrepresentable
Type-Driven Development
Domain-Specific Languages
Algebraic Data Types for Domain Modeling
Previous
5. Advanced Functional Abstractions
Go to top
Next
7. Functional Programming in Practice