Extend type of min to preserve fixnumness.

This commit is contained in:
Vincent St-Amour 2013-01-07 15:19:21 -05:00
parent 6b681f04c4
commit 057a2bd0d2
2 changed files with 7 additions and 1 deletions

View File

@ -212,6 +212,9 @@
(tc-e (angle 2.3) -Zero)
(tc-e (magnitude 3/4) -NonNegRat)
(tc-e (magnitude 3+2i) -NonNegReal)
(tc-e (min (ann 3 Fixnum) (ann 3 Fixnum)) -Fixnum)
(tc-e (min (ann -2 Negative-Fixnum) (ann 3 Fixnum)) -NegFixnum)
(tc-e (min (ann 3 Fixnum) (ann -2 Negative-Fixnum)) -NegFixnum)
[tc-e/t (lambda: () 3) (t:-> -PosByte : -true-lfilter)]
[tc-e/t (lambda: ([x : Number]) 3) (t:-> N -PosByte : -true-lfilter)]

View File

@ -1251,7 +1251,10 @@
[min
(from-cases (map varop (list -Zero -One))
(commutative-case -Zero -One)
(map varop (list -PosByte -Byte -PosIndex -Index -PosInt -Nat))
(map varop (list -PosByte -Byte -PosIndex -Index -PosFixnum -NonNegFixnum))
(commutative-case -NegFixnum -Fixnum)
(commutative-case -NonPosFixnum -Fixnum)
(map varop (list -Fixnum -PosInt -Nat))
(commutative-case -NegInt -Int)
(commutative-case -NonPosInt -Int)
(map varop (list -Int -PosRat -NonNegRat))