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

Re: Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA (Version 1)



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)

Franz says:
(list* (cons a '(b)) c d)

Medley says:
(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.