Transducer Composition and CPS

I am really intrigued by the short abstract of Olin Shivers. Transducer Composition and CPS, but for some reason it seems to be the only reference to it on the web. Can anyone suggest a replacement reading (using continuations for describing push/pull composition of separately defined components)? Ideally it would allow components with more than one input and output, but that's too much to ask :-)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Would you like some

... arrows perhaps? :-)

Definitely, thanks

...just not this time of day :-)

Seriously, I must have thought of them, though the last time I checked (2003 I guess), there was some disconnect between arrows and me. Maybe we matured and can try again...

Introduction to Arrows

I'm writing an Arrows Introduction that should be ready for the July 1st 2005 issue of The Monad.Reader.

The article is in-progress and accessible, feel free to make any comments, suggest any improvements, or whatever.

--Shae Erisson -

Full paper, CSP

The full paper is available here. It's more interesting than the abstract suggests, showing that once transducers are expressed with CPS then just applying standard optimizations handles them quite well. I think the full list is beta, eta, dead argument elimination, inlining, and super-beta (the last three requiring increasingly sophisticated flow analysis).

I wonder how this could be extended to optimize dataflow graphs which are waiting to process input elements from several possible inputs. You could model this situation with a single input stream of tagged values and an extra demultiplexer component. I guess I'll have to try optimizing some terms myself.

I looked at the slides and

I looked at the slides and they're very intriguing as well. I especially like the slide on page 30.

slow churn

interesting stuff.

But I noticed this: the notes from the meeting are marked 1997 and the paper is dated 2006? So it appears it took him 9 years to get a grad student to write it up..? :-)

"How to take a tail of a functional stream" by Oleg Kiselyov

I have been looking for the same answers myself. My main concern is trying to generalize transducers into components with multiple inputs and outputs. I don't think arrows can help there.

So far, this piece of Literal Haskell code from Oleg Kiselyov has been most illuminating for me.