Subject: Re: A lisp question
From: Erik Naggum <>
Date: 1998/04/14
Newsgroups: comp.lang.lisp
Message-ID: <>

* Kent M Pitman
| Surely nothing tells you it's fresh.

  actually, the use of APPEND does.  however, since an implementation is
  allowed to do anything as long as it is EQUAL to that specified with
  APPEND, I guess that means "stay away".

| There was a mighty war right at the instant of backquote's introduction
| (in Maclisp in the late 70's) over this issue.

  did it result in any papers that might still be available?  this is not
  the first time I have managed to stumble onto old battlefields.

| There is a philosophical battle that has raged forever about
|   `(a b ,c)
| and whether it's possible to side-effect that.  One school says that it's
| impractical to build a constructor for this which does NOT make the
| objects fresh and so people should be told that it's ok to side-effect.
| Another school finds it too hard to describe where it's impractical
| and/or it worries that someone will use a hashing-canonicalizer and in
| fact uniquify the result against all odds.  I tend to swim with the
| middle camp who tells people you should never depend on this and then
| sometimes does depend on it.  (On a good day, I put a comment that says
|   `(a b ,c) ;hope this is fresh since it's side-effected later
| or something. :-)

  I appreciate the elucidation, but considering the difficulty of building
  guaranteed fresh lists and vectors without using backquote, and the
  inefficiency of COPY-TREE on the result of a backquoted form, not to
  mention the need to cover vectors specially, wouldn't it be smart to
  provide some internal mechanism that would guarantee freshness without
  all the needless consing that copying everything afterwards requires?

  religious cult update in light of new scientific discoveries:
  "when we cannot go to the comet, the comet must come to us."