From da6694e6cb0755d6a232676808ee96cd5c06ef55 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 29 Nov 2021 21:18:19 -0500 Subject: Remove partial 2-modifier application from the spec and docs --- docs/doc/expression.html | 14 -------------- docs/spec/evaluate.html | 16 ++-------------- docs/spec/grammar.html | 8 +++----- docs/spec/system.html | 10 ---------- 4 files changed, 5 insertions(+), 43 deletions(-) (limited to 'docs') diff --git a/docs/doc/expression.html b/docs/doc/expression.html index 4cff7678..8676b3d9 100644 --- a/docs/doc/expression.html +++ b/docs/doc/expression.html @@ -170,20 +170,6 @@ Function 2-Modifier - - -_c_ -G* -1-Modifier -Partial application - - -F* -_c_ - -1-Modifier -Partial application -

A function with an asterisk indicates that a subject can also be used. Since the role doesn't exist after parsing, function and subject spellings are indistinguishable in these positions. Modifier applications bind more tightly than functions, and associate left-to-right while functions associate right-to-left.

diff --git a/docs/spec/evaluate.html b/docs/spec/evaluate.html index 12e0338c..13d0c455 100644 --- a/docs/spec/evaluate.html +++ b/docs/spec/evaluate.html @@ -64,7 +64,7 @@

In each case the constituent expressions are evaluated in reverse source order: Right, then Called, then Left. Then the expression's result is obtained by calling the Called value on its parameters. A left argument of nothing is not used as a parameter, leaving only a right argument in that case. The type of the Called value must be appropriate to the expression type, as indicated in the "Types" column. For function application, a data type (number, character, or array) is allowed. It is called simply by returning itself. Although the arguments are ignored in this case, they are still evaluated. A braced construct is evaluated by binding the parameter names given in columns L and R to the corresponding values. Then if all parameter levels present have been bound, its body is evaluated to give the result of application.

Modifiers that are evaluated when they receive operands are called immediate. Other modifiers, including primitives and some kinds of block, simply record the operands and are called deferred. The result of applying a deferred modifier once is called a derived function.

-

The following rules always create derived operations, either 1-modifiers or derived functions. A derived operation is identified by the rule that created it, and the values of its parts.

+

The rules for trains create another kind of derived function. A derived function is identified by the rule that created it, and the values of its parts.

@@ -76,18 +76,6 @@ - - - - - - - - - - - - @@ -101,4 +89,4 @@
_mod2_( subject | Func ){𝔽 _C_ R}
Operand_mod2_{L _C_ 𝔽}
Operand Derv Fork
-

As with applications, all expressions are evaluated in reverse source order before doing anything else. Then a result is formed without calling the center value. Its behavior as a function is described in the rightmost column, using L, C, and R for the results of the expressions in the left, center, and right columns, respectively. For the first two rules (partial application), the given operand is bound to the 2-modifier: the result is a 1-modifier that, when called, calls the center 2-modifier with the bound operand on the same side it appeared on and the new operand on the remaining side. A train is a function that, when called, calls the right-hand function on all arguments, then the left-hand function, and calls the center function with these results as arguments.

+

A train is a function that, when called, calls the right-hand function on all arguments, then the left-hand function, and calls the center function with these results as arguments. As with applications, all expressions are evaluated in reverse source order before doing anything else. Then a result is formed without calling the center value. Its behavior as a function is described in the rightmost column, using L, C, and R for the results of the expressions in the left, center, and right columns, respectively.

diff --git a/docs/spec/grammar.html b/docs/spec/grammar.html index d28fa55b..8c002fb6 100644 --- a/docs/spec/grammar.html +++ b/docs/spec/grammar.html @@ -23,16 +23,14 @@ list = "⟨" ? ( ( EXPR )* EXPR ? )? "⟩" subject = atom | ANY ( "‿" ANY )+ -

Starting at the highest-order objects, modifiers have fairly simple syntax. In most cases the syntax for and is the same, but only can be used for modified assignment. The export arrow can be used in the same ways as , but it can also be used at the beginning of a header to force a namespace result, or with no expression on the right in an EXPORT statement.

+

Starting at the highest-order objects, modifiers have simple syntax. In most cases the syntax for and is the same, but only can be used for modified assignment. The export arrow can be used in the same ways as , but it can also be used at the beginning of a header to force a namespace result, or with no expression on the right in an EXPORT statement.

ASGN     = "←" | "⇐" | "↩"
 _m2Expr_ = _mod2_
          | _c_ ASGN _m2Expr_
 _m1Expr  = _mod1
-         | _mod2_ ( subject | Func )  # Right partial application
-         | Operand _mod2_             # Left partial application
-         | _m  ASGN _m1Expr
+         | _m  ASGN _m1Expr
 
-

Functions can be formed by fully applying modifiers or as trains. Modifiers are left-associative, so that the left operand (Operand) can include modifier applications but the right operand (subject | Func) cannot. Trains are right-associative, but bind less tightly than modifiers. Assignment is not allowed in the top level of a train: it must be parenthesized.

+

Functions can be formed by applying modifiers, or with trains. Modifiers are left-associative, so that the left operand (Operand) can include modifier applications but the right operand (subject | Func) cannot. Trains are right-associative, but bind less tightly than modifiers. Assignment is not allowed in the top level of a train: it must be parenthesized.

Derv     = Func
          | Operand _mod1
          | Operand _mod2_ ( subject | Func )
diff --git a/docs/spec/system.html b/docs/spec/system.html
index 1fad9ee3..8f2b5295 100644
--- a/docs/spec/system.html
+++ b/docs/spec/system.html
@@ -447,16 +447,6 @@
 5
 𝕗,𝕣,𝕘
 
-
-Left partial
-6
-𝕗,𝕣
-
-
-Right partial
-7
-  𝕣,𝕘
-
 
 
 

Time

-- cgit v1.2.3