On 8 Jan 2011, at 11:22, Faré wrote:

>>> Daniel Weinreb wrote:
>>> - however, nothing tells us that the resulting value is used immediately
>>>  to initialize the slot (it could just be stored somewhere), and
>>>  implementations seem to be free to do so right now, or later when the
>>>  first instance is created.
>> 
>> Pascal Costanza <p...@p-cos.net> wrote:
>> - When a class is defined for the first time, the :initform for a shared 
>> slot needs to be evaluated immediately, and its result must be stored in 
>> some temporary memory location. (There is no notion of first-class dynamic 
>> environments in Common Lisp, so there is no other way of ensuring that the 
>> :initform can be evaluated in the correct dynamic environment.)
>> 
> No. You may immediately capture the lexical environment in a closure
> `(lambda () ,initform).

I meant the dynamic environment, not the lexical environment.

For example, ContextL provides a way to capture dynamic environments, but this 
requires using ContextL's binding constructs.


Pascal

-- 
Pascal Costanza, mailto:p...@p-cos.net, http://p-cos.net
Vrije Universiteit Brussel
Software Languages Lab
Pleinlaan 2, B-1050 Brussel, Belgium







_______________________________________________
pro mailing list
pro@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/pro

Reply via email to