23 lines
432 B
Racket
23 lines
432 B
Racket
#lang typed/racket
|
|
|
|
;Doesn't TypeCheck
|
|
(struct: foo ())
|
|
(struct: foo-num foo ((v : Number)))
|
|
(struct: foo-str foo ((v : String)))
|
|
|
|
#|
|
|
;TypeChecks
|
|
(struct: foo-num ((v : Number)))
|
|
(struct: foo-str ((v : String)))
|
|
|#
|
|
|
|
|
|
(: extract-foo (case-lambda
|
|
(foo-num -> Number)
|
|
(foo-str -> String)))
|
|
|
|
(define (extract-foo foo)
|
|
(cond
|
|
((foo-num? foo) (foo-num-v foo))
|
|
((foo-str? foo) (foo-str-v foo))))
|