A reference for applying design patterns in functional programming. F# is used throughout, but the ideas transfer to any ML-family language.
- Functions are things — values that can be passed, returned, stored.
- Functions compose — small functions glue into larger ones at type seams.
- Types are not classes — no inheritance, no methods, no hidden state.
- Types compose — products and sums build all data.