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.