typed-racket/typed-racket-test/fail/even-odd-recursive-contract.rkt
2014-12-16 10:07:25 -05:00

29 lines
646 B
Racket

#;
(exn-pred #rx"blaming: \\(interface for even->odd\\)")
#lang racket/load
;; Test mutually recursive type alias contract generation
;; with polymorphism
(module untyped racket
(define (even->odd elem lst) (cons 3 lst))
(provide even->odd))
(module poly-even/odd typed/racket
(define-type (Even A) (U Null (Pairof A (Odd A))))
(define-type (Odd A) (Pairof A (Even A)))
(: even-lst (Even Integer))
(define even-lst '(1 2 3 4))
(: odd-lst (Odd Integer))
(define odd-lst '(1 2 3))
(require/typed 'untyped
[even->odd (All (A) (A (Even A) -> (Odd A)))])
(even->odd 3 even-lst) )
(require 'poly-even/odd)