typed-racket/typed-racket-test/succeed/area.rkt
2014-12-16 10:07:25 -05:00

12 lines
393 B
Racket

#lang typed-scheme
(define-typed-struct rectangle ([width : Number] [height : Number]))
(define-typed-struct circle ([radius : Number]))
(define-type-alias shape (U rectangle circle))
(define: (area [sh : shape]) : Number
(cond [(circle? sh)
(* (ann 3.1416 : Number) (circle-radius sh) (circle-radius sh))]
[else
(* (rectangle-width sh) (rectangle-height sh))]))