15 lines
243 B
Racket
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)))))
|