<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  
</head>
<body text="#000000" bgcolor="#ffffff">
<br>
<br>
Tobias C. Rittweiler wrote:
<blockquote type="cite" cite="mid:87my3lri3h.fsf@freebits.de"><br>
  <pre wrap=""><!---->
Uhm, if you agree with Ron's argumentation, but do not want the
automatic special proclamation, this would mean that

  * (setf x 42)
  42

  * x

must signal an unbound variable error because it'd try to look up a
lexical variable X which is not there.
  </pre>
</blockquote>
What I am suggesting is an interpretation that says<br>
that if a symbol is seen in "variable" context (i.e.<br>
evaluated, or in a setf/setq, or in a let/arglist), and<br>
it is not declared special, and there is no enclosing<br>
lexical definition, then treat it as if it is a dynamic<br>
variable, but do not side effect the environment<br>
as to what symbols are globally declared special.<br>
Then (setf x 42) returns 42 and x returns 42.<br>
As far as I know, that's what CCL does.  I'm pretty<br>
sure the Lisp machine did that too.<br>
<br>
-- Dan<br>
<blockquote type="cite" cite="mid:87my3lri3h.fsf@freebits.de">
  <pre wrap="">
Of course,

  * (locally (declare (special x)) x)
  42

would work.

  -T.
  

_______________________________________________
Openmcl-devel mailing list
<a href="mailto:Openmcl-devel@clozure.com" class="moz-txt-link-abbreviated">Openmcl-devel@clozure.com</a>
<a href="http://clozure.com/mailman/listinfo/openmcl-devel" class="moz-txt-link-freetext">http://clozure.com/mailman/listinfo/openmcl-devel</a>
  </pre>
</blockquote>
</body>
</html>