# Union --- ```text Union_class `alias Enum[.container; .transient] Union[Union_class; TYPE.symbol; ...] ``` ```text u : Union[I64.a; I64.b; I64.c] $ (.c : 5) // defaults to Union[.container; ...] # u { .c {[c] c ... } { ... } // default } ``` # Operators ## ``take` # Transient Unions Can only be retuned from functions and operations. The inner value must be moved out ## Alias ```text Result[Generic.T] `alias Union[.transient; Generic.T.value; Error.error] Option[Generic.T] `alias Union[.transient; Generic.T.some; Void.none] Next[Generic.T] `alias Union[.transient; Generic.T.iter; Void.done] Next_result[Generic.T] `alias Union[.transient; Generic.T.value; Error.error; Void.done] Next_option[Generic.T] `alias Union[.transient; Generic.T.some; Void.none; Void.done] ``` ## Default Operation When a transient union is assigned the first type specified is moved out. If no match is used and if the type is not the first specified a result with an error is returned ```text z : x / y // Result[...] z // is value if y is not zero ``` ## Operators ### \`value ### \`error ### \`some ### \`none