Union types represent the disjunction of types. In conjunction with singleton types, they can be used to represent C-style enum's.
|t+||(types|... => <union>)||G|
|returns union type representing disjunction of types.|
|union-elts||(x|<union> => <seq>)||G|
|types that union type matches.|
|t?||(type|<type> => <union>)||F|
|== (t+ (t= #f) type) (cf., Dylan's false-or). This is often used to widen a type to include the convenient false null.|