- (define-algebraic-type NAME Name? Constructors ....)syntax
where each Constructor, Name, is one of
(Name (arg arg? ...) ...) (Name (arg arg? ...) ... args args? ...)
The generated type, NAME, can be destructured with bind, bind-case etc. as tagged vectors with #:Name as tag.