Make the imperative shell just thin glue; the functional core pure and heavily tested; they communicate by message passing.
Conversation
Imperative shell is like a switchboard operator: not a part of the conversation, just someone with two plugs to connect.
1
Yes. Also, it creates state by attaching identity to values, which I don't know how to fit into that metaphor.
2
Replying to
Sorry, that last bit was somewhat unclear. Say you have drawings (structs). Imperative shell defines "the" (vs. "a") drawing.

