From bb912b081ed339e4a5419bd3d2ffd7465f2f72d3 Mon Sep 17 00:00:00 2001 From: nodist Date: Mon, 27 Jul 2026 17:17:56 -0400 Subject: bottom up redesign --- docs/type_system/union.md | 72 ----------------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 docs/type_system/union.md (limited to 'docs/type_system/union.md') diff --git a/docs/type_system/union.md b/docs/type_system/union.md deleted file mode 100644 index bf9f857..0000000 --- a/docs/type_system/union.md +++ /dev/null @@ -1,72 +0,0 @@ -# Union - ---- - -```text -Union[TAG | TRANSIENT] Collection[VAR_TREE_LIST; TYPE.SYMBOL]] -``` - -## Type Body Object Definitions - -```c -typedef struct { - kpl_type *var_tree, *var_list; -} kpl_type_body_union; -``` - -# Alias - -```text -Tag `definition Union[[TAG] Collection[VAR_TREE_LIST; TYPE.SYMBOL]] - -Transient `definition Union[[TRANSIENT] Collection[VAR_TREE_LIST; TYPE.SYMBOL]] -``` - -## Tag Example - -```text -u : Tag[I64.a; I64.b; I64.c] $ (.c : 5) - -# u { - .c {[c] c ... } - { ... } // default -} -``` - -# Operators - -## ``take` - -# Transient Unions - -Return multiple types from a function - -Can only be retuned from functions and operations. The inner value must be moved out - -## Alias - -```text -Result[Generic.T] `alias Transient[Generic.T.value; Void.null; Error.error] - -Iteration[Generic.T] `alias Transient[Generic.T.value; Void.null; Void.done; Error.error] -``` - -## 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 - -### \`null - -Can take a TYPE as a parameter -- cgit v1.2.3