Param ordering; < and <= Ben Goetter (in the field) 22 Jul 2002 14:12 UTC

"Operation currying" is a nice turn of phrase.  Chez gets the parameter
order right by taking the opportunity to make its SORT parameter order
agree with Scheme's MAP, FOR-EACH, and APPLY.  Yes, this is incompatible
with Common Lisp, but it means that I-- I mean, a Scheme programmer--
will guess the parameter sequence correctly.

Numerically, op< is less expensive than op<=.  Assuming that a fixnum
(lambda (x y) (< x y)) compiles to a signed-comparison sequence like
(x86)

MOV ax, [esp-4]    ; y
SUB ax, [esp-8]    ; (< x y)
JL g01
MOV ax, BOOLEAN_T  ; #t
JMP g02
g01:
MOV ax, BOOLEAN_F  ; #f
g02:

On the x86 and ARM, JL (BLT) tests two flag bits, whereas JLE (BLE)
tests three.  (For unsigned comparisons, JB (BCC) tests one flag bit,
whereas JBE (BLS) tests two.)