compare-by=/>

[procedure] compare-by< lt-pred [x y]

[procedure] compare-by> gt-pred [x y]

[procedure] compare-by<= le-pred [x y]

[procedure] compare-by>= ge-pred [x y]

[procedure] compare-by=/< eq-pred lt-pred [x y]

[procedure] compare-by=/> eq-pred gt-pred [x y]

SRFI-67: If optional arguments x and y are present then these are compared with respect to the total order defined by the predicate(s) given; the result is in {-1, 0, 1}. If x and y are not present then a procedure comparing its two arguments using the predicate(s) given is constructed and returned.

The predicate procedures mean the following: (lt-pred x y) tests if x < y, le-pred tests for <, gt-pred for >, ge-pred for >, and eq-pred tests if x and y are equivalent. The result returned by a predicate procedure is interpreted as a Scheme truth value (i.e. #f is false and non-#f is true).