[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Looks generally OK.  I don't see anything obviously unreasonable about
your new proposal, but one thing that's definitely missing is an
explicit statement that it's supposed to bind the variables specially.

I'd suggest moving your detailed arguments for not eliminating
COMPILER-LET to the discussion section rather than the problem
statement.  I'd like to rebut your claim that the COMPILER-LET example
is more understandable than the MACROLET example; COMPILER-LET is
probably just as confusing to people who are not familiar with its
usage.  Both MACROLET and COMPILER-LET are fairly advanced features. 
(In my experience, few novice Lispers understand how even simple
macros work.)

And, there is another argument for eliminating COMPILER-LET besides
implementability: some people might think that even your improved
definition is confusing and that the functionality it provides is not
worth the additional complication to the language.  For instance, it
seems a little peculiar to me that COMPILER-LET should be allowed to
see dynamic bindings created during ordinary evaluation, but that
ordinary evaluation should not see the dynamic bindings created by

If you have no objection, I'll come up with a revised version that
incorporates these tweaks.  I also noted a few typos in passing.