30 lines
388 B
Racket
30 lines
388 B
Racket
#;
|
|
(exn-pred exn:fail:contract?)
|
|
|
|
#lang racket/load
|
|
|
|
(module T typed/racket
|
|
|
|
(struct: [X] doll ([contents : X]))
|
|
|
|
(define-type RussianDoll
|
|
(Rec RD (U 'center (doll RD))))
|
|
|
|
(: f (RussianDoll -> RussianDoll))
|
|
(define (f rd) rd)
|
|
|
|
(: md (All (x) (x -> (doll x))))
|
|
(define md doll)
|
|
|
|
(provide (all-defined-out)))
|
|
|
|
(module U racket
|
|
(require 'T)
|
|
(f (md 3)))
|
|
|
|
(require 'U)
|
|
|
|
|
|
|
|
|