aboutsummaryrefslogtreecommitdiff
path: root/spec/types.md
diff options
context:
space:
mode:
Diffstat (limited to 'spec/types.md')
-rw-r--r--spec/types.md12
1 files changed, 6 insertions, 6 deletions
diff --git a/spec/types.md b/spec/types.md
index fa3f311e..0d142630 100644
--- a/spec/types.md
+++ b/spec/types.md
@@ -3,15 +3,15 @@ BQN programs manipulate data of six types:
- Number
- Array
- Function
-- Modifier
-- Composition
+- 1-Modifier
+- 2-Modifier
-Of these, the first three are considered *value types* and the remaining three *function types*. We first describe the much simpler function types; the remainder of this page will be dedicated to the value types. A member of any function type accepts some number of *inputs* and either returns a *result* or causes an error; inputs and the result are data 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.
+Of these, the first three are considered *data types* and the remaining three *operation types*. We first describe the operation types; 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 *modifier* takes one *operand*.
-- A *composition* takes two *operands*.
+- A *1-modifier* takes one *operand*.
+- A *2-modifier* takes two *operands*.
-To begin the value types, a *character* is a [Unicode](https://en.wikipedia.org/wiki/Unicode) code point, that is, its value is a non-negative integer within the ranges defined by Unicode (however, it is distinct from this number as a BQN value). Characters are ordered by this numeric value. BQN deals with code points as abstract entities and does not use encodings such as UTF-8 or UTF-16.
+To begin the data types, a *character* is a [Unicode](https://en.wikipedia.org/wiki/Unicode) code point, that is, its value is a non-negative integer within the ranges defined by Unicode (however, it is distinct from this number as a BQN value). Characters are ordered by this numeric value. BQN deals with code points as abstract entities and does not expose encodings such as UTF-8 or UTF-16.
The precise type of a *number* may vary across BQN implementations or instances. A *real number* is a member of some supported subset of the [extended real numbers](https://en.wikipedia.org/wiki/Extended_real_number_line), that is, the real numbers and positive or negative infinity. Some system must be defined for rounding an arbitrary real number to a member of this subset, and the basic arithmetic operations add, subtract, multiply, divide, and natural exponent (base *e*) are defined by performing these operations on exact real values and rounding the result. The Power function (dyadic `⋆`) is also used but need not be exactly rounded. A *complex number* is a value with two real number *components*, a *real part* and an *imaginary part*. A BQN implementation can either support real numbers only, or complex numbers.