Wed Apr 6 22:32:53 EDT 2011
Streams are cool
In my day-job embedded work I'm moving from data structures to streams
a lot. Main reason is to avoid intermediate lists.
My favourite abstraction is for-each with early abort. In C this
needs to be combined with the dual stream interface (open / rewind /
next / eof) because for-each can't be easily inverted (i.e using
Anyways. Maybe this is also true for Forth, but then on one level
deeper: to treat structs as streams because indirect addressing
(structs) are a bit awkward to use: no support for the separate
namespaces. Doing so opens up the door for channel-based
multiprogramming, as a streamed structure read or write can easily be
replaced by a channel connecting producer and consumer.
Essentially this is the same transformation as going from named to
nameless arguments: use position instead of names to encode meaning.
I think a big idea is hidden here. Streams and state machines...
Actually it's not such a big deal: when memory is scarce, you
implement functionality as communicating state machines. Streams and
their associated parsers and printers are state machines, or state
machines embedded in push-down automata (state machine + stack) or