RosettaCodeData/Task/Optional-parameters/Maple/optional-parameters-1.maple

14 lines
454 B
Plaintext

OptionalSort := proc(input, {
ordering :: Or(procedures,identical("lexicographic")) := "lexicographic",
column :: posint := 1,
reverse :: truefalse := false
} )
local compare;
if ordering = "lexicographic" then
compare := (x,y)->evalb(`if`(reverse,x[column]>=y[column],x[column]<=y[column]));
else
compare := (x,y)->`if`(reverse,ordering(x[column],y),ordering(y,x));
end if;
sort( input, compare );
end proc: