# 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 } ``` # Transient Unions Can only be retuned from functions and operations. The inner value must be moved out ## Alias ```text Result[ANY] `alias Union[.transient; ANY.value; Error.error] Option[ANY] `alias Union[.transient; ANY.some; Void.none] Next[Any] `alias Union[.transient; ANY.iter; Void.done] Next_result[Any] `alias Union[.transient; ANY.value; Error.error; Void.done] Next_option[Any] `alias Union[.transient; ANY.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[Int[...]] z // is value if y is not zero ``` ## Operators ### \`value ### \`error ### \`some ### \`none