Russ,
The code below below blocks because any binding a subspace does to a
variable external to itself is speculative, and the program must wait
until the "owner" of the variable binds it, before it can be
determined whether the binding in the subspace is entailed or failed.

> local
> X
> in
> {Browse
> {SearchAll
> proc {$ Y}
> choice Y = a [] Y = b end
> Y = X
> {Browse X#Y}
> end}}
> end

Here's an alternate version to illustrate:
local X in
thread
{Browse {SearchAll
proc {$ Y} choice Y=a [] Y=b end
     Y=X {Browse X#Y}
end}}
end
{Delay 200}
X=b
{Browse [here X]}

Some links that might help:

http://www.mozart-oz.org/documentation/fdt/node17.html
http://www.mozart-oz.org/pipermail/mozart-users/2005/006524.html

And of course, Christian's thesis:
http://www.ps.uni-sb.de/Papers/abstracts/ProgrammingConstraintServices.html

Anyway, you're not the first person to wish that the key ideas about
Spaces from Christian's thesis were distilled in a prominent spot in
the main documentation of Mozart.

Irene

_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to