* Use linear / affine / session types / move semantics
* Describe an interface, then weave side effects through it, such as the State Monad.
* Use lenses
* Use linear / affine / session types / move semantics
* Describe an interface, then weave side effects through it, such as the State Monad.
* Use lenses