chickadee » messages » define-algebraic-type

(define-algebraic-type Child Parent .. variant ....)syntax

where each variant is either of the form

  • (variant-key (a a? ...) ...) or with rest arguments
  • (variant-key (a a? ...) ... as as? ...) defines a selector routine, Child, which, when called with the #:? keyword returns the type predicate, when called with another keyword, returns the corresponding message-constructor. When Child is called with no argument, it returns information on the type. Note that rest arguments, as, as well as their checks are not parenthesized. A specialisation of case-variant, Child-case, is generated as well.