Subject: Re: why is there not (backquote ...)
From: rpw3@rpw3.org (Rob Warnock)
Date: Wed, 14 Mar 2007 02:36:56 -0500
Newsgroups: comp.lang.lisp
Message-ID: <fbCdncnIEOCFO2rYnZ2dnUVZ_uWlnZ2d@speakeasy.net>
Kaz Kylheku <kkylheku@gmail.com> wrote:
+---------------
| Johan Ur Riise <j...@riise-data.no> wrote:
| > Why is there not a backquote function or special form,
| > while threre is '...  == (quote ...)
| 
| Because when Common Lisp was standarized, existing implementations did
| not have such a thing, and each one implemented the read macro in its
| own way: a situation which persists today.
| 
| Therefore, to introduce a BACKQUOTE operator would have meant
| inventing this language feature and forcing everyone to implement it.
| 
| In the first round of standardizing a widely implemented existing
| language, you generally want to codify existing features that are
| common to the various implementations, rather than invent new things
| that nobody has. There are exceptions to this principle, but backquote
| didn't end up one of the exceptions.
+---------------

Unfortunate, IMHO, since IIUIC by the time ANSI CL was gelling
Scheme already *had* standardized a convenient S-expr expansion
for each backquote-related readmacro:

    `form   ==> (backquote form)
    ,form   ==> (unquote form)
    ,@form  ==> (unquote-splicing form)

Unlike CL, in Scheme BACKQUOTE is *not* implemented in the reader,
which merely expands the readmacros into the corresponding S-expr
expansions. BACKQUOTE is instead [pnormally] evaluated by EVAL,
and is of course a special form that must do a tree-walk of its
FORM argument and "do the right thing" when it encounters a sublist
whose CAR is UNQUOTE or UNQUOTE-SPLICING. There is considerable
experience in the Scheme community with this mapping, including
allowing UNQUOTE or UNQUOTE-SPLICING readmacros to be included
in *other* special forms than just BACKQUOTE. ["Scsh" a.k.a. "The
Scheme Shell" depends upon this, but CL *forbids* it, which is why
transliterating "Scsh" to "CLsh"[1] involves inserting lots of
backticks at inconvenient places.]


-Rob

[1] No, I know of no fully-working "CLsh", only a few gedankenexperiments
    and/or.

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607