I think one of the previous messages talked about speculative assignment, which is probably why I get the first output.

 
On 10/9/05, Filip Konvicka <[EMAIL PROTECTED]> wrote:
> Thanks to everyone who clarified the issue of references to external
> variables.  If an attempt to unify a value with an external variable
> suspends, it's not clear to me why the following program produces an
> output before suspending.
>
>     local X in
>        {Browse {SearchAll fun {$} X = x {Browse X} X end}}
>     end
>
> I get an x in the browser--but no output from SearchAll.
>
> I guess this is not critical, but I would like to understand it.  (It
> also confused me earlier in this discussion.)
>
> -- Russ
>

Another interesting observation is that with

local X in
   thread {Browse {SearchAll fun {$} X = x {Browse X} X end}} end
   X=x
end

you force SearchAll to yield a result. My guess is that the wait that
you observe occurs in Space.merge performed by the search engine. But
let's wait for the official explanation :-)

Cheers,
Filip

P.S. you can achieve the same result by feeding the following line by
line to the emulator (each line runs in its own thread):

declare X
{Browse {SearchAll fun {$} X = x {Browse X} X end}}
X=x
_________________________________________________________________________________
mozart-users mailing list                               [email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users



--
_____________________________________________
Professor, Computer Science
California State University, Los Angeles
o Check out my blog at http://russabbott.blogspot.com/
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to