Thank you very much Raphael, I though only procedures could use parameters in that way. Now it's all clearer. Then what about matching whatever#true? Is there a way to do that(i.e. a character like % in SQL)? Regards
2009/2/13 Raphael Collet <[email protected]> > On Fri, Feb 13, 2009 at 12:18 PM, Quirino Zagarese < > [email protected]> wrote: > >> Hi, >> I'm new to Oz and I'm trying to write a simple function which take two >> arguments, a list and a boolean, >> and switches each couple of elements if they are not in ascending order. >> If no switch takes place, the function >> must return the initial_list#true otherwise the new_list#false. >> Here is my function: >> >> declare >> fun{SwitchAndTest Ls Bool} >> case Ls of nil then nil#Bool >> [] [X] then X|nil#Bool >> [] X1|X2|T then >> if X1>X2 then X2|{SwitchAndTest (X1|T) false} >> else >> X1|{SwitchAndTest (X2|T) Bool} >> end >> end >> end >> >> Running {Browse {SwitchAndTest [1 3 2 4 5 6 8 7] true}} returns >> 1|2|3|4|5|6|7|8|nil#false >> instead of [1 2 3 4 5 6 7 8]#false. >> It's a newbie question but I couldn't find any solution for now. >> Then is there a way to match such an expression in a case statement? I >> mean is there a way to write something like >> >> case {SwitchAndTest Ls true} of ANYTHING#false so that it will match >> 1|2|3|4|5|6|7|8|nil#false ? >> Thanks in advance >> > > Split the function in two: one that takes care of the toplevel result > (list#boolean), and another one that builds the list and determines the > boolean. The second function actually has two outputs: the list and the > boolean. > > fun {Switch L} > B in {SwitchAndTest L B}#B > end > > fun {SwitchAndTest L ?B} > case L of nil then B=true nil > [] [X] then B=true [X] > [] X1|X2|T then > if X1>X2 then > B=false X2|{SwitchAndTest X1|T _} > else > X1|{SwitchAndTest X2|T B} > end > end > end > > Cheers, > raph > > > > _________________________________________________________________________________ > mozart-users mailing list > [email protected] > http://www.mozart-oz.org/mailman/listinfo/mozart-users > -- Quirino Zagarese LaszloItalia Founder (www.laszloitalia.org) Software Development Manager - Galilaeus s.r.l.
_________________________________________________________________________________ mozart-users mailing list [email protected] http://www.mozart-oz.org/mailman/listinfo/mozart-users
