diff options
| author | nodist <kevin.comas.git@gmail.com> | 2026-07-16 17:50:07 -0400 |
|---|---|---|
| committer | nodist <kevin.comas.git@gmail.com> | 2026-07-16 17:50:07 -0400 |
| commit | e950f786e25967a222cfa7bce7327ffd458e8c95 (patch) | |
| tree | 8c0cc77ac43806b146a49f74db2332a6181a2515 /docs/type_system/generic.md | |
| parent | 224c245a875a6f28c01e93d037329c708ef81dd4 (diff) | |
add generics
Diffstat (limited to 'docs/type_system/generic.md')
| -rw-r--r-- | docs/type_system/generic.md | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/docs/type_system/generic.md b/docs/type_system/generic.md new file mode 100644 index 0000000..2b9a89f --- /dev/null +++ b/docs/type_system/generic.md @@ -0,0 +1,32 @@ +# Generic + +--- + +```text +Generic[[TYPE | SYMBOL] TARGET; Collection[VAR_TREE_LIST; TYPE.SYMBOL]] +``` + +## Type Body Object Definitions + +```c +typedef struct { + kpl_type *target, *var_tree, *var_list; +} kpl_type_body_generic; +``` + +# Example + +```text +ints : Set[I64] $ () +/* +ints -> Name[[DATA] Var[[LOCAL] Generic[[TYPE] REF_SET; Symbol[Void; REF_I64; T]; ints]; ints] +REF_SET -> Name[[ALIAS] Map[Symbol[Void; Generic[[SYMBOL]]; T]; Void]; Set] +REF_I64 -> Name[[Alias] Bit[[BIT64 | INT_SIGNED]]; I64] +*/ +floats : Array[F64] $ () +/* +floats -> Name[[DATA] Var[[LOCAL] Generic[[TYPE] REF_ARRAY; Symbol[Void; REF_F64; T]; floats]; floats] +REF_ARRAY -> Name[[ALIAS] Buffer[[TYPE] Symbol[Void; Generic[[SYMBOL]]; T]; Array] +REF_F64 -> Name[[Alias] Bit[BIT64 | FLOAT]; F64] +*/ +``` |
