Left and right operand

General APL language issues
Post Reply
User avatar
jmosk
Posts: 69
Joined: Thu Jul 18, 2013 5:15 am

Left and right operand

Post by jmosk »

I am confused over the use of ⍺⍺ and ⍵⍵. Can someone please explain this as the manual is confusing and the examples do not clear it up. Maybe a couple of simple examples would make it easier to understand when one would use this.
+←--------------------------------------------------------------→
+ Jay Moskowitz
+←--------------------------------------------------------------→
+ http://www.linkedin.com/in/jay-moskowitz-5745b83
+
RichardP|Dyalog
Posts: 33
Joined: Fri Oct 12, 2018 3:05 pm

Re: Left and right operand

Post by RichardP|Dyalog »

⍺⍺ and ⍵⍵ are the operands of a Dop. Where a Dfn is a function denoted by curly braces and the use of ⍺ and ⍵ to refer to the left and right arguments, a Dop is an operator denoted by curly braces, the use of ⍺⍺ and ⍵⍵ to refer to the left and right operands.

An operator binds to its operands to create a derived function. This derived function is then applied to arguments in an expression.

A simple example is to recreate the dyadic use of the over operator as a Dop.

Code: Select all

      _Over_ ← {(⍵⍵ ⍺) ⍺⍺ ⍵⍵ ⍵}

      2 4 6 +⍥÷ 1 2 3
1.5 0.75 0.5

      2 4 6 +_Over_÷ 1 2 3
1.5 0.75 0.5
So here ⍺⍺ refers to the left operand function, which is + in this case. The right operand function ÷ is referred to using ⍵⍵. First we take the inverse of the arguments by applying ⍵⍵ monadically, then we apply ⍺⍺ between those inverted arguments.

Note that we still need to refer to the arguments ⍺ and ⍵ of the derived function in order to specify how our operator behaves.

Operands can be arrays as well, as seen in the case of the rank operator and the power operator.

Code: Select all

(+⌿⍤2)   ⍝ Sum down the columns of sub-matrices
(+⌿⍣3)   ⍝ Sum 3 times - equivalent to +⌿+⌿+⌿
Post Reply