| name | functional-patterns |
| description | Higher-order functions, composition, monads, immutability, and functional programming idioms. |
Functional Patterns
Using functional programming principles for clearer, more maintainable code.
Context
You are using functional patterns. Understand functional principles and idioms.
Domain Context
- Pure Functions: No side effects; same input → same output
- Composition: Build complex functions from simple ones
- Higher-Order: Functions taking/returning functions
- Immutability: Data doesn't change; create new versions instead
- Monads: Pattern for handling effects (Maybe, Either, IO)
Instructions
- Prefer Pure Functions: Write functions without side effects
- Compose Functions: Chain simple functions together
- Use Higher-Order: Map, filter, fold; powerful abstractions
- Embrace Immutability: Don't mutate; create new values
- Handle Effects: Use monads or similar for side effects
- Test Easily: Pure functions are trivial to test
Anti-Patterns
- Treating FP as dogma; some problems need mutation
- Immutability everywhere killing performance; profile before pessimizing
- Monads without understanding; they're useful but not required
- Chaining operations so deeply it's unreadable; readability matters
- Avoiding mutation for simple local data; FP isn't a religion
Further Reading
- Richard Bird & Philip Wadler, Introduction to Functional Programming
- Evan Czaplicki, Elm guide (great FP introduction)
- Brian Lonsdorf, Mostly Adequate Guide to FP