# Fn --- ```text Fn_class `alias Enum[.unknown; .incomplete; .process; .generator; .iterator; .closure; .bound; .regex; .native] 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 # Iterating ## \`yield Yielding wraps the value in the transient union `Next` Return `Void` to stop iteration ```text 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 // same as above @ { # `call it { .value { `log v }[v] .done { `break } } } ``` # Calling ## \`fork ```text task : `fork fn value : `join task ``` ## \`call ```text fn `call args // `join fn `task args ```