diff options
Diffstat (limited to 'docs/type_system')
| -rw-r--r-- | docs/type_system/fn.md | 50 | ||||
| -rw-r--r-- | docs/type_system/task.md | 8 |
2 files changed, 48 insertions, 10 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 ``` diff --git a/docs/type_system/task.md b/docs/type_system/task.md index 10d06cc..0f3e575 100644 --- a/docs/type_system/task.md +++ b/docs/type_system/task.md @@ -2,12 +2,10 @@ --- -An asynchronous encapsulation +A segment of code assigned to a process, task code can be recursive ```text -Task_status `alias Enum[...] - -Task[Task_status; TYPE] +Task[JOIN_TYPE; PROCESS; AST; IR; CODE] ``` -## \`wait +## \`join |
