>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Rel
Voc
!:
Help
Dictionary
$: denotes the longest verb that contains it.
|
Example 1:
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.
Example 2:
In quicksort, a “pivot” is chosen at random
from the list to be sorted. The overall result is the sorted
result of the part less than the pivot, catenated to the
part equal to the pivot, catenated to the sorted result
of the part greater than the pivot.
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
] v=: 20 ?.@$ 13
10 3 3 6 11 11 4 0 10 2 5 6 2 0 1 3 12 10 11 5
quicksort v
0 0 1 2 2 3 3 3 4 5 5 6 6 10 10 10 11 11 11 12
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Rel
Voc
!:
Help
Dictionary