Binding Strength

From NARS2000
Revision as of 21:10, 21 March 2019 by WikiSysop (talk | contribs)
Jump to navigationJump to search

Table

The rules for how Variables, Functions, Operators, and Hyperators 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: Trains to right paren "… F)"
3: Left paren to Trains "(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.