Skip to content

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