On Wed, Dec 01, 2010 at 11:22:49PM -0700, Ryan Culpepper wrote: > Hendrik Boom wrote: >> >> Yes, that's the fast way. It can be made faster in a compiler, where >> you can compile the exact list steps through the chain of frames >> instead of looking up names at run-time. > > It's easy to "compile away" the name lookup even in an interpreter by > having a pre-pass* replace variable references with their "lexical > addresses" (see also "rib-cage environment"). That seems to be a very > common exercise in interpreter-based PL classes.
Yes. > > In fact, lexical variables are so easy to analyze that you can try other > representations too. For example, you can annotate every lambda > expression with its free lexical variables and create flat closures. But > beware of variable mutation in that case! That's why you haave to have a location somewhere that contains the variable's value, and let your closures point to it. -- hendrik > > Ryan > > *Arguably, this is a very small, simple compiler. Yes. The boundary between compilation and choosing an in-memory representation for interpretation is vague. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users