From: Jeff Dalton
Subject: Re: ISO/IEC CD 13816 -- ISLisp
Date: 
Message-ID: <DIyuxJ.BI2@cogsci.ed.ac.uk>
Erik Naggum <ยทยทยทยท@naggum.no> writes:

>[Bruno Haible]

I hope we can avoid a language war here...

>|   > - specialized access to dynamic variables
>|   > - apparently, dynamic variables are different from lexical variables
>|   
>|   This cleans up one of the major pitfalls in Common Lisp: In CL,
>|   executing some '(declaim (special x))' will completely screw up the
>|   files you compile afterwards.

>I'm aware of the pitfall, but my impression is still (I have read the draft
>a _little_ more carefully, now) that a symbol may have both a lexical and a
>dynamic value.  is this so? 

Yes, but what Bruno said was right as well (technically).

If you do not proclaim/declaim a name as special, then it can have
both lexical and dynamic values; but after you've proclaimed/declaimed
it special, that ceases to be the case.  (Note that defvar does a
special proclamation.)

(Code that's already been processed (especially if it's been compiled)
may not notice, of course.  I'm not sure exactly what the standard
specifies there.)

The Common Lisp convention of having using a "*" at the beginning
and and of the names of variables that are proclaimed special
means that "files yuo compile afterwards" are seldom screwed
up by special proclamations/declamations.

But many people are not satisfied by mere conventions.  Hence
demands for "information hiding", etc.

-- jeff