#lang typed/racket (: f (case-> (-> Integer) (Integer -> Integer))) (define (f [#{z : Integer} 0]) z) #; (define-values (f) (let-values (((#{core3 : (case-> (Integer True -> Integer) (Univ False -> Integer))}) (lambda (z1 z2) (let-values (((#{z : Integer}) (if z2 z1 '0))) (let-values () z))))) (case-lambda (() (#%app core3 '#f '#f)) ((z1) (#%app core3 z1 '#t))))) (add1 (f 0)) (add1 (f))