schema.spec.variant

variant-spec

(variant-spec pre options)(variant-spec pre options err-f)(variant-spec pre options err-f post)
A variant spec represents a choice between a set of alternative
subschemas, e.g., a tagged union. It has an overall precondition,
set of options, and error function.

The semantics of `options` is that the options are processed in
order. During checking, the datum must match the schema for the
first option for which `guard` passes. During generation, any datum
generated from an option will pass the corresponding `guard`.

err-f is a function to produce an error message if none
of the guards match (and must be passed unless the last option has no
guard).