Mon May 28 15:46:37 EDT 2018

State, revisited

So question: include more state in the state monad by parameterizing
it, or use explicit state in the trace (run) function.

Start from the use case again.

I'm writing a HDL code that is somehow parameterized by a number of
memories.  The implementation of these memories should probably be
abstract, such that it can be filled in during test time.

With this code, I want to: 

- generate it as HDL, where it will be combined with an HDL stub to
  patch it into the memories.

- generate it as a test function that can provide the meories and
  produce an output sequence.

My "main" program can just be parameterized by the memory interfaces,
collected in a functor.