[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA (Version 1)
- To: Jon L White <email@example.com>
- Subject: Re: Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA (Version 1)
- From: masinter.pa@Xerox.COM
- Date: 8 Jan 89 00:31 PST
- Cc: masinter.pa@Xerox.COM, Gray@DSG.csc.ti.com, KMP@STONY-BROOK.SCRC.Symbolics.COM, CL-Cleanup@SAIL.Stanford.EDU
- In-reply-to: Jon L White <firstname.lastname@example.org>'s message of Sat, 7 Jan 89 22:21:13 PST
I must have missed a tense there somewhere.
Let me try to say it a different way:
The meta-rules for backquote were derived "after the fact" as a way to
explain what backquote did; the use of APPEND and the equivalences there
were based on the old semantics of APPEND. Now that we've extended APPEND,
we have to change the meta-rules of backquote, but not the way that
backquote really works in most implementations.
I think the simplest way to "fix" the proposal is to change the second
meta-rule about nil to be
`(x1 x2 x3 ... xn . nil) may be interpreted to mean
(append [x1] [x2] [x3] ... [xn])
-- rather than reducing it to a previous case.
This implies that `(x1 x2 ... . ,form) as in the third meta-rule has the
same interpretation as `(x1 x2 ... ,@form).
This requires fixing the example, so that
`((,a b) ,c ,@d)
will be interpreted as
(append (list (append (list a) (list 'b))) (list c) d)
As far as I can tell, this is consistent with the way that Lucid Common
Lisp's backquote works anyway.
To: '((,a b) ,c ,@d)
Lucid 3.0 says:
(bq-list* (bq-cons a '(b)) c d)
ibuki 01/01 says
(list* (list a 'b) c d)
(list* (cons a '(b)) c d)
(il:bquote (((il:\\\, a) b) (il:\\\, c) (il:\\\,@d)))
which macroexpand to
(LIST* (CONS A (QUOTE (B))) C D)
Somebody borrowed my Mac so I can't try Coral or Procyon, and none of the
local Symbolics machines will let me remote login; but it looks like
*nobody* really tries to APPEND the last structure ever, anyway.