Binding Strength
For two entities X and Y that are adjacent in an expression (that is, X Y), the binding strength between them and the result of the bind is shown in this table:
| Y | ||||||||
|---|---|---|---|---|---|---|---|---|
| A | F | H | MOP | DOP | DOT | IDX | ||
| X | A | 6 A | 3 AF | 3 AF | 4 F | | 7 REF | 4 A |
| F | 2 A | 1 F | 4 F | 4 F | 4 F | |||
| H | | 1 F | 4 F | 4 F | 4 H | |||
| AF | 2 A | 1 F | ||||||
| MOP | 4 ERR | |||||||
| DOP | 5 MOP | 5 MOP | 5 MOP | |||||
| JOT | 5 MOP | 5 MOP | 5 MOP | 4 F | ||||
| DOT | 6 ERR | 5 MOP | 5 MOP | 6 ERR | ||||
| REF | 7 A | 7 F | 7 H | 7 MOP | 7 DOP | |||
| IDX | 3 ERR | 3 ERR | 3 ERR | |||||
where
- A: Array1, for example,
0 1 2 'hello' ⍺ ⍵ - F: Function1 {primitive | defined | derived | system}, for example,
+ - +.× myfn ⎕CR {⍺ ⍵} - H: Hybrid1 function/operator, that is,
/ ⌿ \ ⍀ - AF: Bound left argument, for example,
2+ - MOP: Monadic operator1, for example,
¨ ⍨ & - DOP: Dyadic operator, for example,
⍣ ⍠ ⍤ ⌸ - JOT: Jot, that is, compose/null operand
∘ - DOT: Dot, that is, reference/product
. - IDX: square-bracketed expression, for example,
[⍺+⍳⍵] - ERR: Error
In this table:
- the higher the number, the stronger the binding
- an empty field indicates no binding for this combination; an error.
For example, in the expression a b.c[d], where a, b, c and d are arrays, the binding proceeds:
a b . c [d]
6 7 6 4 ⍝ binding strengths between entities
→ a (b.) c [d]
0 7 4
→ a (b.c) [d]
6 4
→ (a(b.c))[d]