Sun Jul 19 22:00:32 EDT 2015

This is a problem of levels

Obviously... multi-level programming.

However it is easy to get confused about not properly separating
levels.  The morphisms are easily seen as same.

So let's start here:

- (s,i) -> (s,o) is not an Arrow

- A generator of a (s,i) -> (s,o) can be an Arrow

This is similar to Staapl: programs are stateful, but the generator is
functional.  Also corresponds to thinking of a monad as the generator
of a stateful program:

There's a level thing.  The level thing is key!

So let's build it.  What does a SSM constructor look like?

Problem: why are there no constraints on the kind of function you can
lift?  Because this is about structure: *any* pure function can be
inserted inside the network.  The constraints on functions just comes
from the constraints on the type of the composotion maybe?