[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).