Well, I went home and had dinner and ran it again, this time without Ozcar. It ran just fine. I got [1 2 3 4 5] as output. Then I turned on Ozcar and got a yellow thread with no output again.
When I ran it without Ozcar, I got the right answer, but I also got an emulator error message saying
%** Missing else clause
%**
%** Matching: nil
%** in file "Oz", line 22
I guess that's to be expected, but shouldn't SearchAll suppress that? Isn't that sort of thing how SearchAll knows to stop?
When I added 'else skip' to my case statement, I got [1 2 3 4 5 _], which is not what one wants.
I guess that could be fixed with some ugly coding, matching to X1 X2 | Tail in one case and [X1] in the other. But one shouldn't have to do that.
This, finally, works.
local
proc {IsMember X Xs}
case Xs of H1 | (H2 | Tail) then
choice H1 = X [] {IsMember X H2 | Tail} end
[] [H] then X = H
end
end
in
{Browse {SearchAll proc {$ Y} {IsMember Y [1 2 3 4 5]} end}}
end
-- Russ
P.S. In the course of getting this to run I found out that H1 H2 | Tail is not valid syntax as the equivalent is in Prolog. It doesn't work with parentheses either: (H1 H2 | Tail)
On 10/3/05, Russ Abbott <[EMAIL PROTECTED]> wrote:
I'm still trying to use Oz like Prolog, and I'm still confused. For example, I was hoping that if X is unbound the following would bind it to elements of Xs.
proc {IsMember X Xs}
case Xs of
Head | Tail then
choice
Head = X
[] {IsMember X Tail}
end
end
end
If I run{IsMember Y [1 2 3 4 5]}
{Browse Y}Ozcar tells me that I get to the 'end' at the bottom of the choice statement with X bound to 1. At that point the thread turns yellow, saying that it is running. What is it waiting for?If instead I run
{Browse {SearchAll proc {$ Y} {IsMember Y [1 2 3 4 5]} end}}the thread turns yellow when it enters SearchAll. Why don't I get all members of the list as the SearchAll answer?Thanks.-- Russ
_________________________________________________________________________________ mozart-users mailing list [email protected] http://www.mozart-oz.org/mailman/listinfo/mozart-users
