Side Effect Isolation¶
Separating pure computation from effects (I/O, state changes, exceptions) makes the pure parts testable, cacheable, and parallelizable, while containing the complexity of effects to well-defined boundaries.
Tension Addressed¶
Mutability vs. Immutability; Flexibility vs. Safety
Recognizable As¶
Functional core/imperative shell, effect systems, monadic IO, transaction boundaries, unit of work pattern
Canonical Sources¶
Phil Wadler, "Monads for Functional Programming" (1995); Gary Bernhardt, "Boundaries" talk (2012); Haskell IO monad literature
Transfers To¶
Testing (pure logic is easy to test), Concurrency (effect-free code is parallelizable), Architecture (clean architecture), Databases (transaction management)
Sub-concepts: - Pushing effects to the edges: Keep core logic pure, handle effects at system boundaries - Explicit effect tracking: Making effects visible in function signatures or types
Related Concepts¶
- Immutability - Programming Paradigms