I think it should say "Note: FOO declared special" rather
than "Warning:..."

The same information is conveyed with much less of a chance
of alarming the newbie user.

Raymond Toy wrote:

> >>>>> "Mario" == Mario Mommer <[EMAIL PROTECTED]> writes:
>
>     Mario> * (setf x 1) Defines a special out of the box. No newbie knows what a
>     Mario>   special is, and few can understand it before they have some
>     Mario>   experience. And it bites. It bites HARD and it looks like a bug in
>     Mario>   cmucl when it does so.
>
>     Mario>   having ext:*top-level-auto-declare* default to nil would still give
>     Mario>   a warning without giving newbies hell.
>
> If you're a newbie, I think this is even worse:
>
>     * (setf zot 42)
>     ;
>
>     ; Warning: This variable is undefined:
>     ;   ZOT
>     ;
>     42
>     * zot
>     42
>     * (describe 'zot)
>     ZOT is an internal symbol in the COMMON-LISP-USER package.
>     It is a undefined variable; its value is 42.
>
> How good is that to a newbie?  It's says it's undefined, but I just
> defined it!  And it prints out the value I gave!  Other undefined vars
> don't do that!  But describe says it's undefined!  What gives?
>
> So, I think the default value is the best.  At least you're warned.
>
> However, if someone wants to make it so these top-level variables
> aren't special, and has a patch, that might be useful.
>
> Ray


Reply via email to