RosettaCodeData/Task/Optional-parameters/Oz/optional-parameters.oz

31 lines
665 B
Plaintext

declare
class Table
attr
rows
meth init(Rows)
rows := Rows
end
meth sort(ordering:O<=Lexicographic column:C<=1 reverse:R<=false)
fun {Predicate Row1 Row2}
Res = {O {Nth Row1 C} {Nth Row2 C}}
in
if R then {Not Res} else Res end
end
in
rows := {Sort @rows Predicate}
end
end
fun {Lexicographic As Bs} %% omitted for brevity
end
T = {New Table init([["a" "b" "c"] ["" "q" "z"] ["zap" "zip" "Zot"]])}
in
{T sort}
{T sort(column:3)}
{T sort(column:2)}
{T sort(column:2 reverse:true)}
{T sort(ordering:fun {$ A B} {Length B} < {Length A} end)}