diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-09-12 20:15:58 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-09-12 20:15:58 -0400 |
| commit | 95cc441b4aefd08d562cf0ee1110db25ba7afdb0 (patch) | |
| tree | 4d5a4823398955db7d3600761f0caa090ecf37d6 /spec/types.md | |
| parent | ff1c5b1d1489ed89a789c6b461201ecfd6e9511d (diff) | |
Allow system values to create new BQN types even in a non-extended implementation
Diffstat (limited to 'spec/types.md')
| -rw-r--r-- | spec/types.md | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/spec/types.md b/spec/types.md index 4549fd04..dc596563 100644 --- a/spec/types.md +++ b/spec/types.md @@ -11,7 +11,9 @@ BQN programs manipulate data of seven types: - 2-Modifier - Namespace -Of these, the first three are considered *data types* and the next three *operation types*. We first describe the operation types and the namespace; the remainder of this page will be dedicated to the data types. A member of any operation type accepts some number of *inputs* and either returns a *result* or causes an error; inputs and the result are values of any type. When a function is given inputs (*called*), it may produce side effects before returning, such as manipulating variables and calling other functions within its scope, or performing I/O. +Beyond these, an implementation may define [system values](system.md) that create values of other types. The behavior of such values is not specified and is left up to the implementation. + +Of the types specified, the first three are considered *data types* and the next three *operation types*. We first describe the operation types and the namespace; the remainder of this page will be dedicated to the data types. A member of any operation type accepts some number of *inputs* and either returns a *result* or causes an error; inputs and the result are values of any type. When a function is given inputs (*called*), it may produce side effects before returning, such as manipulating variables and calling other functions within its scope, or performing I/O. - A *function* takes one (monadic call) or two (dyadic call) *arguments*. - A *1-modifier* takes one *operand*. - A *2-modifier* takes two *operands*. |
