Mon Aug 17 23:01:28 EDT 2015

Int -> m t

What about this:

   s -> (s -> m (s, t)) -> (Int -> m t)

Making the result a function leaves many things open.  The Eval
semantics would be clear.  The Code semantics could feed in a dummy

The important thing is that :: Int -> t
is a meta-object that can be transformed further.  A code generator, not code.

Essentially it is the representation that fills this in however it

The question is then which one of these return types:

   Int -> m t
   m (Int -> t)

Latter is more difficult to handle for instance of (,).

Former seems like the right thing for now.