5.3 define-datatype
| (define-datatype datatypeid [variantid fieldid ...] ...) |
A short-hand for defining a group of related structures. A define-datatype form
| (define-datatype datatypeid |
| [variantid fieldid ...] |
| ...) |
is equivalent to
| (define (datatypeid? x) |
| (or (variantid? x) ...)) |
| (define-struct variantid (fieldid ...)) |
| ... |