[EMAIL PROTECTED] wrote:

> That is understood. I'm talking about how long that staticly contexted 'f
> will remain accessible. My expectation is that as long as some live
> reference to 'f continues to haunt REBOL, 'f should stay alive as well. Of
> course, the value 'f references will be determined by the value last passed
> to the function, in whose context the argument 'f is defined.
> 
> Opinions?

I agree.

>> g: func [x] ['x]
>> a: g 4
== x
>> get a
== 4
>> recycle
>> get a
== 4
>> b: g 6
== x
>> get b
== 6
>> get a
== 6

So I was not surprised seeing Ladislav's results. If one uses a
dynamic context, things are different:

>> g: func [x] [use [y] [y: :x 'y]]
>> a: g 4
== y
>> b: g 5
== y
>> get a
== 4
>> get b
== 5

But:

>> recycle
>> get b
***CRASH***

A workaround:

>> hidden-contexts: make list! 0
== make list! []
>> g: func [x] [insert tail hidden-contexts make object! [y: :x (x: 'y)] x]
>> a: g 4
== y
>> b: g 5
== y
>> get a
== 4
>> get b
== 5
>> recycle
>> get b
== 5
>> get a
== 4

Ciao,
    /Gabriele./
o--------------------) .-^-. (----------------------------------o
| Gabriele Santilli / /_/_\_\ \ Amiga Group Italia --- L'Aquila |
| GIESSE on IRC     \ \-\_/-/ /  http://www.amyresource.it/AGI/ |
o--------------------) `-v-' (----------------------------------o

Reply via email to