Subject: Re: `fast' global variables (Ex: Re: ??: using * for variable ?)
From: Erik Naggum <erik@naggum.no>
Date: 1999/03/24
Newsgroups: comp.lang.lisp
Message-ID: <3131270602413412@naggum.no>

* Mike McDonald
| A literal object is that one, unique object. It says nothing about
| the status of its contents. In their example of '("two"), it's the
| cons cell that is the literal object being refered to, not the
| string "two" or the NIL on the end. Granted, in this example, you'd
| confuse most people by replaca-ing the list, but I don't see
| anything in this definition that it says you can't.

* Kent M Pitman <pitman@world.std.com>
| Yes, I agree with this analysis philosophically, though the record is
| a bit muddled and both you and Erik are probably slightly confused because
| the language itself is slightly confused on this point.
| "Sorry about that."

  I'm not quite certain that I see where the supposed confusion lies.  if a
  compiler is allowed to store literals in pure space in the first place,
  why does the string that is the supposed "contents" of a list not granted
  the same option?  you (or Mike) seem to be saying that given a literal
  ("foo" "bar") in some variable X, I cannot say (setf (cdr x) '("zot")),
  but I _can_ say (setf (char (car x) 0) #\g).  this seems too specious to
  me to ever want to become an argument I want resolved.  that is, I want
  it to be resolved at a much higher level: "literals are literals all the
  way down".

#:Erik