The defstruct macro allows constructor, predicate and print functions to be specified. Inheritance of other structures through the include keyword is supported, and produces proper subtype relationships. BOA constructors are not supported.