Binding Strength
From NARS2000
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 particular,
- A dyadic operator written as … dop 1 2 3 is interpreted as having a right operand (short right scope) of 1 and a right argument of 2 3.
- A hyperator written as 1 2 3 mhmo is interpreted as having a left hyperand (short left scope) of 3 and a left operand (long left scope) of 1 2.
- A dyadic hyperator written as … dhmo 1 2 3 is interpreted as having a right hyperand (short right scope) of 1 and a right argument of 2 3.
- A dyadic hyperator written as … dhdo 1 2 3 is interpreted as having a right hyperand (short right scope) of 1, a right operand (short right scope) of 2, and a right argument of 3.
To reduce confusion, use parentheses such as (LO (LH dhdo 1) 2) 3.