per se, J uses % to represent division, as a visual approximation or reminder. (This illustrates something of the mnemonic character of J's tokens, and some of the quandaries imposed by the use of ASCII.) Defining a J function named avg to calculate the average of a list of numbers yields: +/ sums the items of the array. # counts the number of items in the array. % divides the sum by the number of items. This is a test execution of the function: 2.5 Above, avg is defined using a train of three verbs (+/, %, and #) termed a fork. Specifically, (V0 V1 V2) Ny is the same as (V0(Ny)) V1 (V2(Ny)) which shows some of the power of J. (Here V0, V1, and V2 denote verbs and Ny denotes a noun.) Some examples of using avg: NB. a random vector 46 55 79 52 54 39 60 57 60 94 46 78 13 18 51 92 78 60 90 62 59.2 NB. moving average on periods of size 4 58 60 56 51.25 52.5 54 67.75 64.25 69.5 57.75 38.75 40 43.5 59.75 70.25 80 72.5 NB. a random matrix 46 5 29 2 4 39 10 7 10 44 46 28 13 18 1 42 28 10 40 12 NB. apply avg to each rank 1 subarray (each row) of m 17.2 22 21.2 26.4 Rank is a crucial concept in J. Its significance in J is similar to the significance of select in SQL and of while in C. Implementing quicksort, from the J Dictionary yields: sel=: adverb def 'u # [' quicksort=: verb define if. 1 >: #y do. y else. (quicksort y <sel e),(y =sel e),quicksort y >sel e=.y{~?#y end. ) The following is an implementation of quicksort demonstrating tacit programming. The latter involves composing functions together and not referring explicitly to any variables. J's support for forks and hooks dictates rules on how arguments applied to this function will be applied to its component functions. quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#) Sorting in J is usually accomplished using the built-in (primitive) verbs /: (sort up) and \: (sort down). User-defined sorts such as quicksort, above, typically are for illustration only. The following example demonstrates the usage of the self-reference verb $: to recursively calculate fibonacci numbers: 1:`($:@-&2+$:@<:)@.(>&2) This recursion can also be accomplished by referring to the verb by name,