From c6a22a53f48057e023b7e3919854194e5860ada7 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Mon, 28 Jun 2010 16:38:39 -0400 Subject: [PATCH] Fixed the type of min and max to only operate on reals. original commit: ef576e27c5187783648209c55d4ca211ff693e05 --- .../typed-scheme/succeed/manual-examples.rkt | 4 ++-- .../typed-scheme/succeed/map-nonempty.rkt | 4 ++-- .../typed-scheme/succeed/new-metrics.rkt | 8 +++---- .../typed-scheme/private/base-env-numeric.rkt | 21 ++++++++++++++----- collects/typed-scheme/scribblings/begin.scrbl | 2 +- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/collects/tests/typed-scheme/succeed/manual-examples.rkt b/collects/tests/typed-scheme/succeed/manual-examples.rkt index 5c6f9731..7541ae74 100644 --- a/collects/tests/typed-scheme/succeed/manual-examples.rkt +++ b/collects/tests/typed-scheme/succeed/manual-examples.rkt @@ -30,7 +30,7 @@ (define-typed-struct leaf ([val : Number])) (define-typed-struct node ([left : (Un node leaf)] [right : (Un node leaf)])) - (define: (tree-height [t : (Un node leaf)]) : Number + (define: (tree-height [t : (Un node leaf)]) : Integer (cond [(leaf? t) 1] [else (max (tree-height (node-left t)) (tree-height (node-right t)))])) @@ -46,7 +46,7 @@ (define-type-alias tree (Un node leaf)) - (define: (tree-height [t : tree]) : Number + (define: (tree-height [t : tree]) : Integer (cond [(leaf? t) 1] [else (max (tree-height (node-left t)) (tree-height (node-right t)))])) diff --git a/collects/tests/typed-scheme/succeed/map-nonempty.rkt b/collects/tests/typed-scheme/succeed/map-nonempty.rkt index 0fddf079..a501bb0a 100644 --- a/collects/tests/typed-scheme/succeed/map-nonempty.rkt +++ b/collects/tests/typed-scheme/succeed/map-nonempty.rkt @@ -1,6 +1,6 @@ #lang typed/scheme -(: x (Pair Number (Listof Number))) +(: x (Pair Integer (Listof Integer))) (define x (cons 1 (list 1 2 3 4))) -(apply max (ann (map add1 x) : (Pair Number (Listof Number)))) \ No newline at end of file +(apply max (ann (map add1 x) : (Pair Integer (Listof Integer)))) \ No newline at end of file diff --git a/collects/tests/typed-scheme/succeed/new-metrics.rkt b/collects/tests/typed-scheme/succeed/new-metrics.rkt index a3316300..5513eda8 100644 --- a/collects/tests/typed-scheme/succeed/new-metrics.rkt +++ b/collects/tests/typed-scheme/succeed/new-metrics.rkt @@ -93,16 +93,16 @@ ;; ---------------------------------------- ;; depth -(: sexp-depth (Any -> Number)) +(: sexp-depth (Any -> Integer)) (define (sexp-depth sexp) (cond [(pair? sexp) (+ (max-sexp-depth sexp) 1)] [else 0])) -(: max-sexp-depth (Any -> Number)) +(: max-sexp-depth (Any -> Integer)) (define (max-sexp-depth losx) - (improper-foldr (λ: ([t : Any] [r : Number]) (max (sexp-depth t) r)) 0 losx)) + (improper-foldr (λ: ([t : Any] [r : Integer]) (max (sexp-depth t) r)) 0 losx)) (: avg-sexp-depth ((Listof Any) -> Number)) (define (avg-sexp-depth sexps) @@ -201,7 +201,7 @@ ;; ---------------------------------------- ;; expression size -(: atoms (Any -> Number)) +(: atoms (Any -> Integer)) (define (atoms sexp) (cond [(null? sexp) 0] diff --git a/collects/typed-scheme/private/base-env-numeric.rkt b/collects/typed-scheme/private/base-env-numeric.rkt index a407d8ca..ac078375 100644 --- a/collects/typed-scheme/private/base-env-numeric.rkt +++ b/collects/typed-scheme/private/base-env-numeric.rkt @@ -120,16 +120,27 @@ (list (->* (list -Real) -Real -Real)) (list (->* (list N) N N))))] -[max (apply cl->* - (->* (list -PositiveFixnum) -Fixnum -PositiveFixnum) +[max (cl->* (->* (list -PositiveFixnum) -Fixnum -PositiveFixnum) (->* (list -NonnegativeFixnum) -Fixnum -NonnegativeFixnum) + (->* (list -NegativeFixnum) -NegativeFixnum -NegativeFixnum) (->* (list -Fixnum) -Fixnum -Fixnum) (->* (list -Pos) -Integer -Pos) (->* (list -Nat) -Integer -Nat) - (for/list ([t all-num-types]) (->* (list t) t t)))] -[min (apply cl->* + (->* (list -Integer) -Integer -Integer) + (->* (list -ExactRational) -ExactRational -ExactRational) + (->* (list -Flonum) -Flonum -Flonum) + (->* (list -Real) -Real -Real))] +[min (cl->* (->* (list -PositiveFixnum) -PositiveFixnum -PositiveFixnum) + (->* (list -NonnegativeFixnum) -NonnegativeFixnum -NonnegativeFixnum) + (->* (list -NegativeFixnum) -Fixnum -NegativeFixnum) + (->* (list -Fixnum) -NegativeFixnum -NegativeFixnum) (->* (list -Fixnum) -Fixnum -Fixnum) - (for/list ([t all-num-types]) (->* (list t) t t)))] + (->* (list -Pos) -Pos -Pos) + (->* (list -Nat) -Nat -Nat) + (->* (list -Integer) -Integer -Integer) + (->* (list -ExactRational) -ExactRational -ExactRational) + (->* (list -Flonum) -Flonum -Flonum) + (->* (list -Real) -Real -Real))] [add1 (cl->* (-> -Pos -Pos) diff --git a/collects/typed-scheme/scribblings/begin.scrbl b/collects/typed-scheme/scribblings/begin.scrbl index 697c1056..137b8e29 100644 --- a/collects/typed-scheme/scribblings/begin.scrbl +++ b/collects/typed-scheme/scribblings/begin.scrbl @@ -74,7 +74,7 @@ typed/racket (define-struct: leaf ([val : Number])) (define-struct: node ([left : Tree] [right : Tree])) -(: tree-height (Tree -> Number)) +(: tree-height (Tree -> Integer)) (define (tree-height t) (cond [(leaf? t) 1] [else (max (+ 1 (tree-height (node-left t)))