www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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)))