summaryrefslogtreecommitdiff
path: root/docs/type_system/fn.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/type_system/fn.md')
-rw-r--r--docs/type_system/fn.md50
1 files changed, 45 insertions, 5 deletions
diff --git a/docs/type_system/fn.md b/docs/type_system/fn.md
index dbc8251..28fe437 100644
--- a/docs/type_system/fn.md
+++ b/docs/type_system/fn.md
@@ -3,11 +3,51 @@
---
```text
-Fn_class `alias Enum[.partial; .native; .process; .iterator; .closure; .bound; .regex]
+Fn_class `alias Enum[.unknown; .incomplete; .process; .generator; .iterator; .closure; .bound; .regex; .native]
-Fn[Fn_class; RETURN_TYPE; ARGS; STATE; List]
+Fn[Fn_class; RETURN_TYPE; Tuple[ARGS]; STATE; List]
```
+# Function Classes
+
+## Unknown
+
+Placeholder before evaluation
+
+## Incomplete
+
+A function with an incomplete type, type checking occurs at invocation
+
+## Process
+
+A list of tasks with state
+
+## Generator
+
+A function for creating an iterator or closure
+
+## Iterator
+
+A task creator with state, cannot take arguments, can be called until done
+
+## Closure
+
+A task creator with state that can take arguments
+
+## Bound
+
+A function with some arguments already set
+
+## Regex
+
+Regular Expression
+
+## Native
+
+Native function wrapper
+
+# Returning
+
## \`return
## Transient Union Return Chaining
@@ -21,7 +61,7 @@ Yielding wraps the value in the transient union `Next`
Return `Void` to stop iteration
```text
-fn : Fn[n] $ ( @ 1 .. n { `yield 2 * x }[x] )
+fn : Fn[n] $ ( @ 1 < n { `yield 2 * x; n +: 1 }[x] )
it : fn `call 10
// invoking
@ it { `log v }[v] // 2 4 6 8 10 12 14 16 18 20
@@ -40,11 +80,11 @@ it : fn `call 10
```text
task : `fork fn
-value : `wait task
+value : `join task
```
## \`call
```text
-fn `call args // `wait fn `task args
+fn `call args // `join fn `task args
```