Binding Strength
Table
The rules for how Variables, Functions, Operators, Hyperators and other syntactic elements combine are covered in the following table:
# | Category | Description | Example |
---|---|---|---|
12: | Brackets left | Brackets to what is on their left | "? […]" |
11: | Specification left | Left arrow to what is on its left | "? ←" |
10: | Right hyperand, right operand | Dyadic hyperator to its right hyperand | "HYP ?" |
9: | Right hyperand, left operand | Dyadic hyperator to its right hyperand | "HYP ?" |
8: | Left hyperand, right operand | Hyperator to its left hyperand | "? HYP" |
7: | Left hyperand, left operand | Hyperator to its left hyperand | "? HYP" |
6: | Right operand | Dyadic operator to its right operand | "DOP ?" |
5: | Vector notation | Array to an array | "A A" |
4: | Left operand | Operator to its left operand | "? MOP" |
4: | Train right | Train to its right paren | "… F)" |
3: | Train left | Train to its left paren | "(F …" |
3: | Left argument | Function to its left argument | "A F" |
2: | Right argument | Function to its right argument | "F A" |
1: | Specification right | Left arrow to what is on its right | "← ?" |
0: | Brackets right | Brackets to what is on their right | "[…] ?" |
One way to look at these rules is that if you are given three names and/or symbols, you can always tell whether the middle object binds to the left or right object.
Vector Notation
As the above table indicates, Vector Notation has a lower Binding Strength than both a right operand to its operator and either hyperand to its hyperator. One consequence of this is a change introduced in NARS2000 Version 0.5.10 w.r.t. Numeric Strands, in conjunction with the short scope of the three elements: Right Operands, Left Hyperands, and Right Hyperands.
In particular,
- A dyadic operator written as <aplcl>… dop 1 2 3 4</aplcl> is interpreted as having a right operand (short right scope) of <aplcl>1</aplcl> and a right argument (long right scope) of <aplcl>2 3 4</aplcl>.
- A hyperator written as either <aplcl>1 2 3 4 mhmo</aplcl> or <aplcl>1 2 3 4 mhdo …</aplcl> is interpreted as having a left hyperand (short left scope) of <aplcl>4</aplcl> and a left operand (long left scope) of <aplcl>1 2 3</aplcl>.
- A dyadic hyperator written as <aplcl>… dhmo 1 2 3 4</aplcl> is interpreted as having a right hyperand (short right scope) of <aplcl>1</aplcl> and a right argument (long right scope) of <aplcl>2 3 4</aplcl>.
- A dyadic hyperator written as <aplcl>… dhdo 1 2 3 4</aplcl> is interpreted as having a right hyperand (short right scope) of <aplcl>1</aplcl>, a right operand (short right scope) of <aplcl>2</aplcl>, and a right argument (long right scope) of <aplcl>3 4</aplcl>.
To reduce confusion, use parentheses such as <aplcl>(LO (LH dhdo 1) 2) 3 4</aplcl>.
Abbreviations:
- dop Dyadic Operator
- mhmo Monadic Hyperand Monadic Operand Hyperator
- mhdo Monadic Hyperand Dyadic Operand ...
- dhmo Dyadic Hyperand Monadic Operand ...
- dhdo Dyadic Hyperand Dyadic Operand ...