aboutsummaryrefslogtreecommitdiff
path: root/docs/spec
diff options
context:
space:
mode:
Diffstat (limited to 'docs/spec')
-rw-r--r--docs/spec/index.html2
-rw-r--r--docs/spec/types.html3
2 files changed, 3 insertions, 2 deletions
diff --git a/docs/spec/index.html b/docs/spec/index.html
index fa8ad8c9..d02d6de2 100644
--- a/docs/spec/index.html
+++ b/docs/spec/index.html
@@ -28,5 +28,5 @@
<li>If the specification does not identify the fill element for an array, then any or no fill can be deterministically chosen.</li>
<li>If an expression in a program cannot be evaluated without error (that is, there is no context that would cause the program, or a caller with access to its result, to evaluate the expression but not eventually fail with an error), then the implementation may reject this program, giving an error before evaluating any code and regardless of context—in this case, it must not accept the program in any context. This &quot;compiler clause&quot; modifies the behavior described above.</li>
<li>The way the program's output (either a result or an error) is displayed to the user is not specified.</li>
-<li>Any system values can be implemented, and they may act in an arbitrary way including modifying the behavior of the rest of the program. If system values with names given in this specification are implemented, however, then they must conform with the specified behavior.</li>
+<li>Any system values can be implemented, and they may act in an arbitrary way including modifying the behavior of the rest of the program. System values can create values with types not included in the specification, whose behavior is left up to the implementation. If system values with names given in this specification are implemented, however, then they must conform with the specified behavior.</li>
</ul>
diff --git a/docs/spec/types.html b/docs/spec/types.html
index ce432dbd..50d96bf0 100644
--- a/docs/spec/types.html
+++ b/docs/spec/types.html
@@ -15,7 +15,8 @@
<li>2-Modifier</li>
<li>Namespace</li>
</ul>
-<p>Of these, the first three are considered <em>data types</em> and the next three <em>operation types</em>. 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 <em>inputs</em> and either returns a <em>result</em> or causes an error; inputs and the result are values of any type. When a function is given inputs (<em>called</em>), it may produce side effects before returning, such as manipulating variables and calling other functions within its scope, or performing I/O.</p>
+<p>Beyond these, an implementation may define <a href="system.html">system values</a> that create values of other types. The behavior of such values is not specified and is left up to the implementation.</p>
+<p>Of the types specified, the first three are considered <em>data types</em> and the next three <em>operation types</em>. 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 <em>inputs</em> and either returns a <em>result</em> or causes an error; inputs and the result are values of any type. When a function is given inputs (<em>called</em>), it may produce side effects before returning, such as manipulating variables and calling other functions within its scope, or performing I/O.</p>
<ul>
<li>A <em>function</em> takes one (monadic call) or two (dyadic call) <em>arguments</em>.</li>
<li>A <em>1-modifier</em> takes one <em>operand</em>.</li>