UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture3/ snippet-019.rkt
#lang plait
(define-type AE
  [Num (n : Number)]
  [Add (l : AE) (r : AE)]
  [Sub (l : AE) (r : AE)])

(define (eval expr)
  (type-case AE expr
    [(Num n)   ....]
    [(Add l r) (.... (eval l) .... (eval r))]
    [(Sub l r) (.... (eval l) .... (eval r))]))