[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
YARIM and the adbmal example
- To: JLW@SU-AI.ARPA
- Subject: YARIM and the adbmal example
- From: Bernard S. Greenberg <BSG@SCRC-STONY-BROOK.ARPA>
- Date: Mon, 13 May 85 12:22 EDT
- Cc: common-lisp@SU-AI.ARPA
- In-reply-to: The message of 13 May 85 12:05-EDT from Jon White <JLW@SU-AI.ARPA>
Date: 13 May 85 0905 PDT
From: Jon White <JLW@SU-AI.ARPA>
Re: your message of 10-May-85 14:39 EDT
Not only is your adbmal example "right", but the following would have to
(defmacro mumble (x) `(lambda (,x) (list ,x)))
(defun foo () ((mumble z) (mumble z)))
I just tried this out in pdp10 maclisp, and it still sort of works [I
remember putting this hac in about 1979 or 1980, and it wasn`t all
that well received even back then].
Incidentally, I did take your suggestion for macro-expansion contexts
seriously. Not that I approve of going al the way for it, but you do
bring into focus the fact that several different kinds of processing
are going on during interpretations -- not just EVAL alone, but there
is FUNVAL (if you will) to fetch the function part, there is DODECLS
to add to a declarations database [Maclisp had a functional counterpart
to DECLARE, which is why macroexpansion seemed like such a natural idea
there], and there is lambda-list parsing. I'd prefer to see a uniform
meta-expansion syntax -- such as defmacro -- but we may have to consider
context as per your suggestion.
You got it. That is exactly what I just said to Scott. Each of these
contexts should be identified separately, via a uniform mechanism.
That would fix ((mumble z) (mumble z)), i.e., make it -not- work.