1. |
A mnemonic one- or two-character spelling for primitives.
|
2. |
No order-of-execution hierarchy among functions.
|
3. |
The systematic use of ambivalent functions that,
like the minus sign in arithmetic, can denote one function when
used with two arguments (subtraction in the case
of -), and another when used with one argument
(negation in the case of -).
|
4. |
The adoption of terms from English grammar that better fit
the grammar of J than do the terms commonly used in mathematics
and in programming languages. Thus, a function such as addition is
also called a verb (because it performs an action),
and an entity that modifies a verb (not available in most
programming languages) is accordingly called an adverb.
|
5. |
The systematic use of adverbs and conjunctions to modify verbs,
so as to provide a rich set of operations based upon a rather
small set of verbs. For example, +/a denotes the sum
over a list a , */a denotes the product
over a , a */ b is the
multiplication table of a and b .
|
6. |
The treatment of vectors, matrices, and other arrays
as single entities.
|
7. |
The use of functional or tacit programming that
requires no explicit mention of the arguments of a function (program)
being defined, and the use of assignment to assign names to functions
(as in sum=:+/ and mean=:sum % #).
|
The following sections are records of actual