[Haskell-cafe] Re: Can this be done?

Derek Elkins derek.a.elkins at gmail.com
Thu Feb 12 21:11:27 EST 2009


On Thu, 2009-02-12 at 19:55 -0500, Chung-chieh Shan wrote:
> wren ng thornton <wren at freegeek.org> wrote in article <4993BBEE.9070603 at freegeek.org> in gmane.comp.lang.haskell.cafe:
> > It's ugly, but one option is to just reify your continuations as an ADT, 
> > where there are constructors for each function and fields for each 
> > variable that needs closing over. Serializing that ADT should be simple 
> > (unless some of those functions are higher-order in which case you run 
> > into the same problem of how to serialize the function arguments). In 
> > GHC's STG machine this representation shouldn't have much overhead, 
> > though it does require the developer to do the compiler's job.
> 
> FWIW, this idea is called defunctionalization (due to Reynolds),
> and it works for higher-order functions as well (because you can
> defunctionalize those function arguments in the same way).
> 
> People in many fields put a lot of effort into turning their programs
> into state machines...
> 
This paper by Ezra Cooper and Phil Wadler is an interesting recent
development in the theory of defunctionalization and very relevant to
this particular topic as well:
http://homepages.inf.ed.ac.uk/wadler/topics/links.html#located-lambda



More information about the Haskell-Cafe mailing list