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

15 lines
243 B
Racket

#lang typed/racket
(struct: (A) x ([f : (A -> A)]))
(struct: (B) y ([f : (x B)]))
(: f : (U Integer (y Integer)) -> Integer)
(define (f v)
(if (y? v)
((x-f (y-f v)) 0)
v))
(f 17)
(f (y (x (lambda: ([n : Integer]) (+ 2 n)))))