;; := (general aide) ;; where general is a knight, and aide is a serf. ;; ;; := (private salary) ;; | (officer fellow squire servant salary) ;; where fellow is a knight, and squire and servant are serfs. ;; salary is a number of potatoes. ;; ;; := (simpleton potatoes) ;; | (idiot) ;; | (spy rebel) ;; where potatoes is a number, and rebel is a regent. ;; Template for knight: ;; (define knight-fun (lambda (k) (cond [(knight-private? k) ...(knight-private-salary k)...] [(knight-officer? k) ...(knight-officer-fellow k)...(knight-officer-squire k)... ...(knight-officer-servant k)...(knight-officer-salary k)...] [else (error 'knight-fun "Bad knight ~s" k)])))