From 3889036b1259557ed85890a5a3542db677280903 Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Sat, 28 Mar 2015 13:15:15 -0700 Subject: [PATCH] Simplify types for positive? and negative?. --- .../typed-racket/base-env/base-env-numeric.rkt | 18 ++---------------- .../unit-tests/typecheck-tests.rkt | 6 ++++++ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt b/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt index 7da48d8e..08997f55 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt @@ -914,22 +914,8 @@ [inexact? (make-pred-ty (Un -InexactReal -InexactImaginary -InexactComplex))] [fixnum? (make-pred-ty -Fixnum)] [index? (make-pred-ty -Index)] -[positive? (cl->* (-> -Byte B : (-FS (-filter -PosByte 0) (-filter -Zero 0))) - (-> -Index B : (-FS (-filter -PosIndex 0) (-filter -Zero 0))) - (-> -Fixnum B : (-FS (-filter -PosFixnum 0) (-filter -NonPosFixnum 0))) - (-> -Int B : (-FS (-filter -PosInt 0) (-filter -NonPosInt 0))) - (-> -Rat B : (-FS (-filter -PosRat 0) (-filter -NonPosRat 0))) - (-> -Flonum B : (-FS (-filter -PosFlonum 0) (-filter -NonPosFlonum 0))) - (-> -SingleFlonum B : (-FS (-filter -PosSingleFlonum 0) (-filter -NonPosSingleFlonum 0))) - (-> -InexactReal B : (-FS (-filter -PosInexactReal 0) (-filter -NonPosInexactReal 0))) - (-> -Real B : (-FS (-filter -PosReal 0) (-filter -NonPosReal 0))))] -[negative? (cl->* (-> -Fixnum B : (-FS (-filter -NegFixnum 0) (-filter -NonNegFixnum 0))) - (-> -Int B : (-FS (-filter -NegInt 0) (-filter -Nat 0))) - (-> -Rat B : (-FS (-filter -NegRat 0) (-filter -NonNegRat 0))) - (-> -Flonum B : (-FS (-filter -NegFlonum 0) (-filter -NonNegFlonum 0))) - (-> -SingleFlonum B : (-FS (-filter -NegSingleFlonum 0) (-filter -NonNegSingleFlonum 0))) - (-> -InexactReal B : (-FS (-filter -NegInexactReal 0) (-filter -NonNegInexactReal 0))) - (-> -Real B : (-FS (-filter -NegReal 0) (-filter -NonNegReal 0))))] +[positive? (-> -Real B : (-FS (-filter -PosReal 0) (-filter -NonPosReal 0)))] +[negative? (-> -Real B : (-FS (-filter -NegReal 0) (-filter -NonNegReal 0)))] [exact-positive-integer? (make-pred-ty -Pos)] [exact-nonnegative-integer? (make-pred-ty -Nat)] diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index b1759640..638f6c00 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -3562,9 +3562,15 @@ (error "foo")) #:extend-env ([foo-x (t:-> (-prefab 'foo -String) -String)]) #:msg #rx"expected: \\(Prefab foo.*given: \\(Prefab bar"] + [tc-e/t (lambda: ([x : Real-Zero]) (or (zero? x) x)) (t:-> -RealZero (t:Un (-val #t) -InexactRealNan) : -true-filter)] + + [tc-e/t (lambda: ([x : Byte]) (positive? x)) + (t:-> -Byte -Boolean : (-FS (-filter -PosByte 0) (-filter -Zero 0)))] + [tc-e/t (lambda: ([x : Fixnum]) (negative? x)) + (t:-> -Fixnum -Boolean : (-FS (-filter -NegFixnum 0) (-filter -NonNegFixnum 0)))] ) (test-suite