Raphael Collet wrote:
Harmon Nine wrote:
The proc, as it is involved in FD constraints, creates a "space." A
space can only modify variables that are created locally within it
(here, created within the proc). Any variables created outside the
space (i.e. outside the proc), but the space still has access to (via
closure), are read-only.
Well, the story is slightly more complicated... A thread inside a space
can bind a variable created outside that space, but the binding is not
visible outside the space. In other words, the space is allowed to
"speculate" on the variable's value. The speculation is like a local
assumption made by the space only. [...]
Indeed, due to the fact that you can bind the variable inside the space,
you can detect failures in cases where the variable is not bound outside
yet:
declare X
S={Space.new proc {$ _}
X::2#3
X=1
{Show X}
end}
{Browse {Space.ask S}}
Notice that in the previous case Space.ask doesn't need to wait for the
global determination of X. The value to which X is bound outside won't
change the situation of the space
Luis
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users