up previous next

sort a list

SortBy(L: LIST, LessThanFunc: FUNCTION)

This function sorts the elements of the list in L in increasing order with respect to the comparisons made by LessThanFunc; it overwrites L and returns NULL.

The comparison function LessThanFunc takes two arguments and returns True if the first argument is less than the second, otherwise it returns False. The sorted list is in increasing order.

Note that to call SortBy(L,LessThanFunc) inside a function you will need to make the name LessThanFunc accessible using TopLevel LessThanFunc;

Note that if both LessThanFunc(A, B) and LessThanFunc(B, A) return true, then A and B are viewed as being equal.

/**/  Define LessThanLen(S, T)    -- define the sorting function
/**/    Return len(S) < len(T);
/**/  EndDefine;

/**/  L := ["bird", "mouse", "cat", "elephant"];
/**/  SortBy(ref L, LessThanLen);
/**/  L;
["cat", "bird", "mouse", "elephant"]

See Also