Sat Dec 7 12:51:43 EST 2019
How to actually do that? Phantom types.
It seems like a good idea. Abstract enough to be correct, but also
completely unusable without some concrete modeling ideas.
The essense is state machines. So start there maybe? A state machine
is something that transforms (event,state) into ([out_event],state).
Stick to single input, many output machines. Capture multi-input in
EDIT: Focus on composition? Given a low-level implementation /
specification pair, construct a way to compose them.
Also, the specifications give phantom types to the implementations.
The more I think about it this way, the easier it is to be ok with the
fairly simple "boring haskell" approach for Seq. It really is just an
implementation language, and a phantom layer is all that's needed.
EDIT: The model doesn't need to be actual. It can just be a
repackaging of input streams. Where model "fit" is just the ability
to express pack/unpack of data?