typed-racket/typed-racket-test/succeed/cl-tests.rkt
2014-12-16 10:07:25 -05:00

36 lines
828 B
Racket

#lang typed-scheme
(define-type-alias number Number)
(define-type-alias boolean Boolean)
(define-type-alias top Any)
(define: a : (number -> number) (lambda: ([x : number]) x))
(define: f : (case-lambda (number -> number)
(boolean boolean -> boolean))
(case-lambda
[(#{x : number}) (add1 x)]
[(#{a : boolean} #{b : boolean}) (and a b)]))
(define: f* : (case-lambda (number -> number)
(boolean boolean -> boolean))
(case-lambda:
[([x : number]) (add1 x)]
[([a : boolean] [b : boolean]) (and a b)]))
(f 5)
(f #t #f)
#;(f #t)
(define-type-alias idfunty (All (a) (a -> a)))
(define-type-alias (idfunty2 a) (a -> a))
(define: g : (idfunty number) (lambda: ([x : number]) x))
(define: (h [f : (idfunty number)]) : number (f 5))
(define: (h* [f : (idfunty2 number)]) : number (f 5))
(h f*)
(h* f*)