Thu Aug 13 19:02:50 EDT 2015

Comp (Sig Comp o) -> Sig Comp o

I'm running into another plumbing function type ::

Comp (Sig Comp o) -> Sig Comp o

Is it possible to write it?

m (s -> m (s, o))   ->   (s -> m (s, o))

Doesn't seem so.  So something else is wrong.

The Sig is inside Comp because of makeVar.
Maybe it's best to move that inside of appSig.

Something is really wrong here...

Does it actually make sense to have generic functions of the form

s -> m (s, i)   ->   s -> m (s, o)

For m = code, 
problem is that it is not possible to construct a value :: Sig m t
Only :: m (Sig m t)

Is it possible to run this?
m (Sig m t)

m (s -> m (s, o))   ->   s -> m (s, o)

EDIT:  Trick is to generate :: Sig m t from m t using
mSig v = Sig () $ \() -> liftM ((),) v