21 lines
859 B
Plaintext
21 lines
859 B
Plaintext
procedure main()
|
|
X := [ [1,2,3], [2,3,1], [3,1,2]) # A list of lists
|
|
Sort(X) # vanilla sort
|
|
Sort(X,"ordering","numeric","column",2,"reverse") # using optional parameters
|
|
end
|
|
|
|
procedure Sort(X,A[]) # A[] provides for a variable number of arguments
|
|
while a := get(A) do {
|
|
case a of {
|
|
"ordering" : op := case get(A) | runerr(205,a) of {
|
|
"lexicographic"|"string": "<<"
|
|
"numeric": "<"
|
|
default: runerr(205,op)
|
|
}
|
|
"column" : col := 0 < integer(col := get(A)) | runerr(205,col)
|
|
"reverse" : reverseorder := reverse
|
|
default: runerr(205,a)
|
|
}
|
|
return (\reverseorder|1)(bubblesortf(X,\c|1,\op|"<<")) # reverse or return the sorted list
|
|
end
|