Sat Oct 28 17:55:30 CEST 2017

This is how you write imperative code


- pure functions
- abstract data types  (needed by functions)
- sequential FFI

1. Create a pure representation of state updates, meaning a data
   structure that needs to be interpreted.  == "update script".

2. Create an interpreter to apply these pure update scripts against a
   stateful object.  Preferrably, using transaction semantics for
   updates that can fail.

3. Put all the logic to compute the update in pure functions