diff --git a/module/rnrs/arithmetic/flonums.scm b/module/rnrs/arithmetic/flonums.scm index 558b0afd0..60d6cf6e2 100644 --- a/module/rnrs/arithmetic/flonums.scm +++ b/module/rnrs/arithmetic/flonums.scm @@ -66,7 +66,7 @@ (rnrs lists (6)) (rnrs r5rs (6))) - (define (flonum? obj) (and (number? obj) (inexact? obj))) + (define (flonum? obj) (and (real? obj) (inexact? obj))) (define (assert-flonum . args) (or (for-all flonum? args) (raise (make-assertion-violation)))) (define (assert-iflonum . args) diff --git a/test-suite/tests/r6rs-arithmetic-flonums.test b/test-suite/tests/r6rs-arithmetic-flonums.test index 4222e8d8b..c5d60cec1 100644 --- a/test-suite/tests/r6rs-arithmetic-flonums.test +++ b/test-suite/tests/r6rs-arithmetic-flonums.test @@ -30,7 +30,10 @@ (pass-if "flonum? is #t on flonum" (flonum? 1.5)) - (pass-if "flonum? is #f on non-flonum" + (pass-if "flonum? is #f on complex" + (not (flonum? 1.5+0.0i))) + + (pass-if "flonum? is #f on exact integer" (not (flonum? 3)))) (with-test-prefix "real->flonum"