diff --git a/collects/rnrs/base-6.ss b/collects/rnrs/base-6.ss index a48d2b8af4..551f19b3cf 100644 --- a/collects/rnrs/base-6.ss +++ b/collects/rnrs/base-6.ss @@ -195,16 +195,22 @@ (integer? (real-part o))))) (define (finite? n) - (not (or (eqv? n +inf.0) - (eqv? n -inf.0) - (eqv? n +nan.0)))) - + (if (real? n) + (not (or (eqv? n +inf.0) + (eqv? n -inf.0) + (eqv? n +nan.0))) + (raise-type-error 'infinite? "real" n))) + (define (infinite? n) - (or (eqv? n +inf.0) - (eqv? n -inf.0))) + (if (real? n) + (or (eqv? n +inf.0) + (eqv? n -inf.0)) + (raise-type-error 'infinite? "real" n))) (define (nan? n) - (eqv? n +nan.0)) + (if (real? n) + (eqv? n +nan.0) + (raise-type-error 'nan? "real" n))) ;; Someone needs to look more closely at div and mod. ;; I started with the code from Enger04, and poked it diff --git a/collects/tests/r6rs/test.sls b/collects/tests/r6rs/test.sls index 590801e603..0e76d61219 100644 --- a/collects/tests/r6rs/test.sls +++ b/collects/tests/r6rs/test.sls @@ -109,7 +109,7 @@ (set! checked (+ 1 checked)) (unless (if (and (real? expected) (nan? expected)) - (nan? got) + (and (real? got) (nan? got)) (or (equal? got expected) (and (expected-exception? expected) (expected-exception? got))))