Hello, >> Indeed, only the macro expander has enough information to generate an >> optimal list of "reachable lexicals", i.e. lexical variables that are >> accessible using normal symbols (as opposed to syntax objects) [more >> on this below]. > > Are you certain that you want to restrict the set of identifiers? > > To me it sounds like an optimization, perhaps premature.
If I understand correctly, Mark wants to restrict the set of variables you can access to those you could access through normal Scheme code. This is an issue because psyntax happens to provide a way to access more variables than standard Scheme. If this is the case, I think we should absolutely restrict it to standard Scheme, because letting you access everything psyntax can access a) is not Scheme and b) restricts our future implementation choices. > What do you think about having a <the-environment> tree-il form have a > field for the names and a field for the gensyms of captured lexicals? > >> This is great news, because it means that `the-environment' will no >> longer require its own tree-il type, and the compiler will only see the >> standard scheme code that it expands into. This actually seems bad to me, although I'm just guessing. Because the thing is, it's not *really* that Scheme code that you wrote, and so the compiler is seeing something wrong. It has the same variable-capture properties as that code, but it's not actually that. My instinct is that compiling non-accurate code is going to be more trouble than it's worth, but that's just a guess. In general, this thread has been very, very impressive. Thanks a lot to everyone who has been working so hard on this. Noah