up previous next
MaxBy    --    a maximum element of a list

MaxBy(L: LIST, LessThanFunc: FUNCTION)

This function returns a maximum of the elements of the list L with respect to the comparisons made by LessThanFunc .

The comparison function LessThanFunc takes two arguments and returns true if the first argument is less than the second, otherwise it returns false .

NOTE: to call MaxBy(L,LessThanFunc) inside a function you will need to make the name LessThanFunc accessible using TopLevel LessThanFunc;

NOTE: if both LessThanFunc(A, B) and LessThanFunc(B, A) return true , then A and B are viewed as being equal: for example, when comparing two polynomials by their LPP only.

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

/**/  L := ["bird", "mouse", "cat", "elephant"];
/**/  MaxBy(L, ByLength);

/**/  use QQ[x,y];
/**/  Define ByLPP(S, T)  return LPP(S) < LPP(T);  EndDefine;
/**/  L := [x^2*y -y -3, x^5 -1, x^5 -y^2 +3];
/**/  MaxBy(L, ByLPP);
x^5 -1

See Also