although this is of course only possible if the verb is named: fibonacci=:1:`(fibonacci@-&2+fibonacci@<:)@.(>&2) The following expression exhibits pi with n digits and demonstrates the extended precision abilities of J: NB. set n as the number of digits required NB. extended precision 10 to the nth * pi 314159265358979323846264338327950288419716939937510 Verbs and Modifiers A program or routine - something that takes data as input and produces data as output - is called a verb. J has a rich set of predefined verbs, all of which work on multiple data types automatically: for example, the verb searches within arrays of any size to find matches: 3 1 4 1 5 9 i. 3 1 NB. find the index of the first occurrence of 3, and of 1 0 1 3 1 4 1 5 9 i: 3 1 NB. find the index of the last occurrence of 3, and of 1 0 3 User programs can be named and used wherever primitives are allowed. The power of J comes largely from its modifiers: symbols that take nouns and verbs as operands and apply the operands in a specified way. For example, the modifier takes one operand, a verb to its left, and produces a verb that applies that verb between each item of its argument. That is, is a verb, defined as 'apply between the items of your argument' Thus, the sentence +/ 1 2 3 4 5 produces the effect of 1 + 2 + 3 + 4 + 5 +/ 1 2 3 4 5 15 J has roughly two dozen of these modifiers. All of them can apply to any verb, even a user-written verb, and users may write their own modifiers. While modifiers are powerful individually, allowing repeated execution, i. e. do-while conditional execution, i. e. if execution of regular or irregular subsets of arguments some of the modifiers control the order in which components are executed, allowing modifiers to be combined in any order to produce the unlimited variety of operations needed for practical programming. Data types and structures J supports three simple types: Numeric Literal (Character) Boxed Of these, numeric has the most variants. One of J's numeric types is the bit. There are two bit values: 0, and 1. Also, bits can be formed into lists. For example, 1 0 1 0 1 1 0 0 is a list of eight bits. Syntactically, the J parser