[Ecls-list] turn off auto declares

Dean O'Connor dean.oconnor at ite.com.au
Mon Nov 21 07:07:04 UTC 2005


naturally i mean when you eval "test1" ... not just defun it.

":P

Dean O'Connor wrote:

>
> Well errr ... I don't know really. I just found that CMUCL link and 
> thought it might be a clue for ECL.
>
> Perhaps I am asking something silly .... but let me be more specific ...
>
> I am converting old Emac Lisp scripts to work under ECL. These old 
> scripts used global variables everywhere. They just set them in 
> functions with a "setq".
> There are no LETs or even DEFVAR/PARAMETERS.
> I am trying to convert them to local (and some dynamic/special) 
> variables, but its difficult to be sure I don't miss any.
>
> So if when I ran the scripts (not compiled), if a "setq" failed 
> because the symbol  is not bound to anything then I would know i've 
> missed declaring/binding a variable in LET or whatever.
>
> Is there a way to force it so that setq/f will fail if the variables 
> is not yet bound to anything ... or am I losing the plot here ?????
>
> Eg:
>
> (defparmeter y 2)
>
> (defun test1 () (setq x 1))    --> I would like it to fail, since x is 
> not bound
>
> (defun test2 () (setq y 2))  ---> this should work, cause y is bound 
> already
>
> Cheers
> Dean
>
> Juan Jose Garcia Ripoll wrote:
>
>> On Mon, 2005-11-21 at 15:15 +0100, Juan Jose Garcia Ripoll wrote:
>>  
>>
>>> I do not see this work on my copy of CMUCL (19a-release-20 from
>>> Debian) :-/ See below that the behavior of the compiler is independent
>>> of the variable they mention: it always signals an error on undefined
>>> variables, much like ECL. Hence, ext:*top-level-auto-declare* only
>>> controls how interpreted forms behave, and even then it is only a
>>> warning, not an error.
>>>
>>> Is this what you meant?
>>>
>>> Juanjo
>>>   
>>
>>
>> The following statement was run on one CMUCL session:
>>
>>  
>>
>>> * (setq s 1)
>>> Warning:  Declaring S special.
>>>
>>> 1
>>>   
>>
>>
>> The following ones in a different one:
>>
>>  
>>
>>> * (setq ext:*top-level-auto-declare* nil)
>>>
>>> NIL
>>> * (compile 'foo '(lambda () (setq s 1)))
>>> ; Compiling LAMBDA NIL:
>>> ; Compiling Top-Level Form:
>>>
>>> ; In: LAMBDA NIL
>>>
>>> ;   (SETQ S 1)
>>> ; Warning: Undefined variable S
>>> ; ;
>>>
>>> ; Warning: This variable is undefined:
>>> ;   S
>>> ;
>>>
>>> ; Compilation unit finished.
>>> ;   2 warnings
>>>
>>>
>>> FOO
>>> NIL
>>> NIL
>>> * (foo)
>>>
>>> 1
>>>   
>>
>>
>> As for the lisp image:
>>
>> CMU Common Lisp CVS release-19a 19a-release-20040728 + minimal debian 
>> patches, running on mpq3p32
>> With core: /usr/lib/cmucl/lisp.core
>> Dumped on: Fri, 2005-10-14 11:44:34+02:00 on mpq3p32
>> For support see http://www.cons.org/cmucl/support.html Send bug reports
>> to the debian BTS.
>> or to pvaneynd at debian.org
>> type (help) for help, (quit) to exit, and (demo) to see the demos
>>
>> Loaded subsystems:
>>    Python 1.1, target Intel x86
>>    CLOS based on Gerd's PCL 2004/04/14 03:32:47
>>
>>
>>
>> -------------------------------------------------------
>> This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
>> Register for a JBoss Training Course.  Free Certification Exam
>> for All Training Attendees Through End of 2005. For more info visit:
>> http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
>> _______________________________________________
>> Ecls-list mailing list
>> Ecls-list at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/ecls-list
>>  
>>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
> Register for a JBoss Training Course.  Free Certification Exam
> for All Training Attendees Through End of 2005. For more info visit:
> http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
> _______________________________________________
> Ecls-list mailing list
> Ecls-list at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ecls-list






More information about the ecl-devel mailing list