test-tagged.rkt (732B)
1 #lang typed/racket 2 3 (require phc-adt phc-toolkit type-expander) 4 (adt-init) 5 6 (check-equal?: (match (ann (tagged t1 [x 1] [y "b"]) 7 (tagged t1 [x : Number] [y : String])) 8 [(tagged t1 [x a] [y b]) (list 'ok b a)] 9 [_ #f]) 10 '(ok "b" 1)) 11 (check-equal?: (match (ann (tagged foo [x "o"] [y 3] [z 'z]) 12 (tagged foo 13 [x String] 14 [z 'z] 15 [y Fixnum])) 16 [(tagged foo z x y) (list z y x)]) 17 '(z 3 "o")) 18 19 (define-type ma (tagged ma (fav String) (faa ma) (fab mb))) 20 (define-type mb (tagged mb (fbv String) (fba ma)))