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

Issue: [Not Really] LET-TOP-LEVEL (version 1)

    Date: Mon, 7 Mar 88 21:41:38 PST
    From: Jon L White <edsel!jonl@labrea.Stanford.EDU>

    ... The problem underlying these still seems to be the discrepancy possible 
    between eval/load time definition and macroexpansion, and compile time 
    definition and macroexpansion.  X3J13 had a subcommittee that was supposed 
    to investigate the semantics of macros.  It appears to be defunct. ...

Well, kinda and kinda not.

The real problem is the committee overlap. When the macro committee was formed,
it was in specific answer to the Lisp1/Lisp2 issue and was to focus on macro
hygeine (a la Kohlbecker), which turns out to have nothing to do with (i.e., to
be complete orthogonal to) expansion -time-.

We on the committee studied Kohlbecker's thesis and while the ideas were
interesting, they were not clearly something we could just lift and use
directly in Common Lisp. It seemed clear that some "research" needs to
be done and none of us on the macro committee has had time to do the
necessary research.  The Scheme community is still in flux on the macro
issue, and we're also waiting and watching to see what happens there...

We also decided not to feel terribly guilty about not doing the
aforementioned research because even if it were successful and we had
something to propose based on the results, it's very likely that it
would be "radical" and inappropriate for a standard at this time (though
not, for example, inappropriate for a new language or a particular
implementation).  Put another way, our decision to do nothing was not
completely out of laziness.  Our "informed judgement" at this point was
that while macros could use some cleanup, such cleanup might be
potentially destabilizing. It is not important to CL that every
committee form a proposal. It is only necessary that committees look
hard at the issues and determine if a proposal needs to be made.

One of the stumbling blocks we encountered in our discussions is that
there is no clear macro expansion time, but we felt that this issue was
outside of our charter. Rightly, we felt the Compiler committee was in
charge of this, but regardless of who is in charge, there's really no
practical way in the current political arena that I can see anyone giving
in on the following single very important point: to get good clear semantics
(and I use that word in the informal sense; subsitute the word "meaning" if
it makes you uncomfortable) you have to do initial pre-processing of forms
at a known time, even in the interpreter. My impression is that there is a
camp of die-hards who will not give up lazy macro expansion, and so I expect
this issue never to go anywhere.

Maybe I will write up a cleanup item on macro expansion time just to see
if my impression is imaginary. It would certainly clean up so many things if
we could get people to agree to it...