Related articles |
---|
How to implement lexical closures? grom358@gmail.com (grom) (2010-05-06) |
Re: How to implement lexical closures? sleepdev@gmail.com (andy johnson) (2010-05-09) |
Re: How to implement lexical closures? gneuner2@comcast.net (George Neuner) (2010-05-09) |
Re: How to implement lexical closures? cr88192@hotmail.com (BGB / cr88192) (2010-05-09) |
Re: How to implement lexical closures? torbenm@diku.dk (2010-05-10) |
Re: How to implement lexical closures? grom358@gmail.com (grom) (2010-05-11) |
Re: How to implement lexical closures? cr88192@hotmail.com (BGB / cr88192) (2010-05-12) |
Re: How to implement lexical closures? gene.ressler@gmail.com (Gene) (2010-05-12) |
[8 later articles] |
From: | andy johnson <sleepdev@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Sun, 9 May 2010 10:45:07 -0700 (PDT) |
Organization: | Compilers Central |
References: | 10-05-031 |
Keywords: | design, storage |
Posted-Date: | 09 May 2010 16:08:05 EDT |
In terms of performance, for stack based languages you might want to
take a look at a technique called lambda lifting (http://
en.wikipedia.org/wiki/Lambda_lifting). The effect of which is to
reduce a program with closures to a program without closures. However
it is nontrivial to implement(consider the case of functions that
return functions) and as such may be easier to take the memory and/or
performance hit and just pass around closures explicitly.
Explicit closure passing may be implemented as continuations:
abstract class Continuation
{
Object[] closure;
Object call(Object[] args);
}
it is important to note also that all top level functions would also
need to use this interface in order to normalize the calling
convention for first-class functions.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.