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←{⍺[⍋⍵]}⍨
.