[EMAIL PROTECTED] wrote:
Hi, all! During some experiments I found a behaviour of cond during search that
I cannot explain. It looks like a bug to me. Can anyone please explain the
difference between the two calls to ExploreAll in the following:
--------------------------------------
declare
proc {F S}
C
in
S = {FS.var.upperBound [1#20]}
C = ({FS.card S} <: 2)
thread
cond
C = 1
then
{Browse here}
case {FS.reflect.upperBound S} of
[X] then {FS.include X S}
else skip end
end
end
{Space.waitStable}
{FS.subset S {FS.value.make [1]}}
end
proc {F2 S}
C
in
S = {FS.var.upperBound [1#20]}
thread
cond
{FS.card S} <: 2
then
{Browse here}
case {FS.reflect.upperBound S} of
[X] then {FS.include X S}
else skip end
end
end
{Space.waitStable}
{FS.subset S {FS.value.make [1]}}
end
{ExploreAll F}
{ExploreAll F2}
----------------------------
I think that the reason is the same that justifies the difference in the
following cases:
{Space.new proc {$ _}
S = {FS.var.upperBound [1]}
C = ({FS.card S} <: 2)
in
thread
Sp={Space.new proc{$ _} C = 1 end}
in
{Browse {Space.ask Sp}}
end
end _}
{Space.new proc {$ _}
S = {FS.var.upperBound [1]}
in
thread
Sp={Space.new proc{$ _} {FS.card S} <: 2 end}
in
{Browse {Space.ask Sp}}
end
end _}
In the second case you wait until S is bound.
Cheers,
Luis
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users