[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Wired numeric predicates?
The R^3 Report mentions multiple argument variations on the numeric
predicates (like =, <, et al) which test (resp) numeric equality,
monotonically increasing numeric sequence, ...
May some implementations implement these as left-to-right special forms
(derived expressions) where once a #F result is established the remaining
terms are not evaluated? If so, the manual should be careful not to call
these ``procedures'', or at least to mention that some implementations allow
them to not be procedures.
I ask because it seemed natural to think of (say) < as being:
(< <x1> <x2> <x3>...) = (let* ((temp1 <x1>) ; Preserve L->R eval while
(temp2 <x2>)) ; avoiding evaling <x2> twice
(and (< temp1 temp2) (< temp2 <x3>...)))
For example, (= 1 2 (diverge)) ==> #F
Or maybe different names should be used for the wired versions? Like putting
a `?' in there names (or maybe better for wired predicates to NOT have `?'s
and non-wired ones TO have them).