|  |  | Unions

## Unions

Union types represent the disjunction of types. In conjunction with singleton types, they can be used to represent C-style `enum`'s.

`<union>` | `(<type>)` | `C`
`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. |

|  |  | Unions