>>>>> "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