wren ng thornton wrote: > On 9/17/10 4:04 PM, Ben Franksen wrote: >> wren ng thornton wrote: >>> Note that when compilers do CPS conversion, everything is >>> converted into let-binding and continuations (i.e., longjump/goto with >>> value passing). It's just dual to the everything-is-lambda world, >>> nothing special. >> >> Do you know a good online introduction to CPS conversion that explains >> the kind of duality you mentioned? > > Not off hand. These papers[1] give a pretty good explanation of CPS > conversion and the other stages of compilation, from the perspective of > proving compiler correctness. But they don't say much about the duality > aspect of it. For the duality side of things, Andrzej Filinski's masters > thesis[2] is an excellent read; though it doesn't say much about > compilation IIRC.
Thanks, I'll take a look. > Basically the duality comes when decomposing a whole program. When we > separate a term from its context, which part is in control? Control is > just a perspective, so you could be outside the function looking in, or > inside the function looking out. One person's push is another's pull. > This is the same sort of thing as build/foldr vs unfoldr/destroy forms > of list fusion: once we separate the F-algebra and F-coalgebra, which > one should get the recursion?[3] Ok, this gives me some vague intuition. Cheers Ben _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe