Thanks for the code. It's definitely a less stateful way of double looping without the overhead of internal anonymous procs. I'll comment on your other point and Jorge's in the next message.
-- Russ
On 10/25/05, Raphael Collet <[EMAIL PROTECTED]> wrote:
Russ Abbott wrote:
> I thought that the definition of Permute using thread
> bombs ( http://cs.calstatela.edu/~wiki/index.php/Courses/CS_460/Fall_2005/What_programmers_should_know_about_Oz#Using_the_thread_bomb
> < http://cs.calstatela.edu/~wiki/index.php/Courses/CS_460/Fall_2005/What_programmers_should_know_about_Oz#Using_the_thread_bomb>)
> was a very cool little illustration of the power of delayed evaluation
> for implementing constraints without using extra constraint mechanisms.
> Isn't anyone else tickled by it? Is it a technique that is so standard
> that it seems like old hat to everyone else? I'm surprised at lack of
> response--other than Raph's somewhat sour message.
Sorry if my message looked sour, that was not the intent.
I think you got the point. In an Oz programmer's eyes it looks way
unthrilling. I feel a bit like a C programmer using double pointers
every day, and looking at another programmer limiting him/herself to
arrays. And I start thinking: "Maybe pointers (huh, I mean constraints)
are not *that* trivial."
However from a pedagogical point of view, I think you are just right.
BTW there is a really bad idea in the definition of function Permute:
the argument is called List. Never call a list List! List is the
standard name of the list module. You'll experience an unexpected
suspension if you ever replace MakeList by List.make!
I also have a suggestion for the double loop in AllDistinct. I tend to
avoid indexed loops, and prefer loops on lists instead. You can write
AllDistinct as
proc {AllDistinct Xs}
%% each element in Xs is different from its successors in Xs
case Xs of X|Xr then
for Y in Xr do
thread X==Y = false end
end
{AllDistinct Xr}
else skip end
end
Cheers,
raph
_________________________________________________________________________________
mozart-users mailing list [email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users
_________________________________________________________________________________ mozart-users mailing list [email protected] http://www.mozart-oz.org/mailman/listinfo/mozart-users
