Default Left Argument

The special syntax: ⍺←expr is used to give a default value to the left argument if a dfn is called monadically. For example:

      root←{      ⍝ ⍺th root
          ⍺←2     ⍝ default to sqrt
          ⍵*÷⍺
      }

The expression to the right of ⍺← is evaluated only if its dfn is called with no left argument.

Note that the syntax must be exactly ⍺←, that is, it cannot contain parentheses, and so on.

⍺← must be the first tokens at the beginning of an expression.

Ambivalence

The assignment ⍺←⊢ allows an ambivalent function to call an ambivalent sub-function. For example in:

      foo←{
         ⍺←⊢
         ⍺ goo ⍵
      }

If foo is given a left argument, this is passed to goo. Otherwise, ⍺ is assigned ⊢ and the last line is ⊢ goo ⍵, which is a monadic call on goo followed by the ⊢ (Right) of the result of goo, which is the same value.

The assignment ⍺←⍣0 allows an ambivalent operator to skip the application of an operand to a missing argument. For example in:

      over←{
         ⍺←⍣0
         (⍺⍺ ⍺)⍵⍵(⍺⍺ ⍵)
      }

If the function derived from over is given a left argument, this argument is preprocessed by the left operand ⍺⍺ and the result is passed to the right operand ⍵⍵. Otherwise, ⍺ is assigned ⍣0 and the last line is (⍺⍺⍣0)⍵⍵(⍺⍺ ⍵), which is a monadic call on ⍵⍵ followed by not applying ⍺⍺ to the result of ⍵⍵, returning it unmodified.

The assignment ⍺←⍵ allows a function to act as if the commute operator (⍨) was applied to it twice:

      sort←{
         ⍺←⍵
         ⍵[⍋⍺]
      }

If sort is given a left argument, the right argument is sorted according to the left argument. Otherwise, ⍺ is assigned ⍵ and the last line is ⍵[⍋⍵], which has the right argument sorted according to itself. This is, therefore, equivalent to sort←{⍵[⍋⍺]}⍨⍨ or sort←{⍺[⍋⍵]}⍨.