Mon Jul 20 01:48:38 EDT 2015

generator = language -> program

So what is the language?

- delay operator
- pure functions (data flow)
- output feedback

+ other control structs, e.g. representations of map, fold (spatial
part), subsampling, ...

this relates to the 4 parts above.

The important part now is the output feedback.  Can ArrowLoop be used?

loop :: a (b, d) (c, d) -> a b c

Maybe it is a good example to implement this for streams, and then
generalize from there?

The more I think about this, the more I realize that it should be
actually quite simple.  What's in the way is my mental representation:
it is too complex.  Too much indirect.

How to trust the types?

I wonder though about loop: how to impose unit delay in feedback?  The
types don't prevent this (a shifted stream is still a stream) but the
laws might make it hard.

Maybe it will be clear later what to do in this case.