$: is a proxy that assumes the result of the phrase in
which it occurs, the phrase being terminated on the left by a copula
or by the completion of the sentence. For example:
1:`(] * $:@<:)@.* 5
120
In the foregoing expression, the agenda (@.)
chooses the verb ] * $:@<: as long as the argument
(reduced by one each time by the application of the decrement)
remains non-zero. When the argument becomes zero, the result of
the right argument of @. is zero, and the constant
function 1: is chosen.
If $:@ were omitted from the expression,
it would execute once only as follows:
1:`(] * <:)@.* 5
20
The inclusion of self-reference ensures that the entire
function is re-executed after decrementing the argument.
|