diff --git a/collects/mzlib/private/contract.ss b/collects/mzlib/private/contract.ss index 1d1db452fd..dd9830dec0 100644 --- a/collects/mzlib/private/contract.ss +++ b/collects/mzlib/private/contract.ss @@ -1080,10 +1080,24 @@ add struct contracts for immutable structs? (λ (x) (and (number? x) (<= n x m)))))))) - (define (=/c x) (make-between/c x x)) - (define (<=/c x) (make-between/c -inf.0 x)) - (define (>=/c x) (make-between/c x +inf.0)) - (define (between/c x y) (make-between/c x y)) + (define (=/c x) + (unless (number? x) + (error '=/c "expected a number, got ~e" x)) + (make-between/c x x)) + (define (<=/c x) + (unless (number? x) + (error '<=/c "expected a number, got ~e" x)) + (make-between/c -inf.0 x)) + (define (>=/c x) + (unless (number? x) + (error '>=/c "expected a number, got ~e" x)) + (make-between/c x +inf.0)) + (define (between/c x y) + (unless (number? x) + (error 'between/c "expected a number as first argument, got ~e, other arg ~e" x y)) + (unless (number? y) + (error 'between/c "expected a number as second argument, got ~e, other arg ~e" y x)) + (make-between/c x y)) (define (