Introduction to 'j' and Foundational Concepts
From the j curriculum
Introduction to 'j' and Foundational Concepts
TL;DR
J is a powerful, concise, and array-oriented programming language. It uses symbols to process data, especially numbers, in a way that often looks like math notation. Learning J involves getting comfortable with its unique syntax and "thinking in arrays."
1. The Mental Model
Think of J as a super-calculator that loves lists of numbers. You tell it what to do with symbols, and it instantly applies those operations across entire lists, not just one number at a time. It’s like describing a complex math problem elegantly.
2. The Core Material
J is a descendant of APL, known for its expressiveness and mathematical notation. It's often called a "tacit" or "point-free" language because you frequently operate on data without explicitly naming variables.
What is a "Verb" and a "Noun"?
In J, data are nouns (like numbers or arrays), and operations are verbs. Verbs can act in two ways:
* Monadic: Acting on one argument (like negation _).
* Dyadic: Acting on two arguments (like addition +).
Let's see some basic nouns and verbs:
5 NB. This is a noun: the number 5
_5 NB. This is a noun: negative 5 (underscore for negative)
+ 5 NB. This is a monadic verb: identity (result is 5)
- 5 NB. This is a monadic verb: negation (result is _5)
5 + 3 NB. This is a dyadic verb: addition (result is 8)
5 - 3 NB. This is a dyadic verb: subtraction (result is 2)
Notice the NB. – that's how you write comments in J. You'll run these commands in a J interpreter, like the J console.
Arrays are Fundamental
J excels at array processing. An array can be a single number, a list of numbers, or even a table.
1 2 3 NB. A simple list (rank 1 array)
Verbs naturally extend to arrays:
1 2 3 + 10 NB. Adds 10 to each element: 11 12 13
1 2 3 + 4 5 6 NB. Adds corresponding elements: 5 7 9
The Power of i. (Integers)
i. is an incredibly useful monadic verb that generates a sequence of integers starting from zero.
i. 5 NB. Generates 0 1 2 3 4
Introducing +/ (Sum) and other "Adverbs"
J has adverbs and conjunctions that modify verbs or combine them. +/ is an adverb that applies + between elements.
+/ 1 2 3 4 5 NB. Sums the elements: 1+2+3+4+5 = 15
This is called reduce. Other common reductions:
* */ (product)
* -/ (alternating sum/difference)
* </ (minimum)
* >/ (maximum)
Order of Operations: Right to Left
Unlike standard math where multiplication happens before addition, J evaluates expressions strictly from right to left.
3 + 4 * 5 NB. In J, this is 3 + (4 * 5) which is 3 + 20 = 23
(3 + 4) * 5 NB. Use parentheses to change order
This right-to-left evaluation is core to J's design.
3. Worked Example
Let's find the sum of the squares of the first 10 integers (0 to 9).
First, generate the integers:
i. 10
0 1 2 3 4 5 6 7 8 9
Next, square each number. Squaring is *:.
*: i. 10
0 1 4 9 16 25 36 49 64 81
Finally, sum these results using +/:
+/ *: i. 10
285
This reads naturally: "sum (of) square (of) integers (up to) 10".
4. Key Takeaways
- J uses nouns (data) and verbs (operations), with adverbs and conjunctions modifying verbs.
- Verbs can be monadic (one argument) or dyadic (two arguments).
- Arrays are fundamental; J operations automatically apply to entire arrays.
- J evaluates expressions strictly from right to left, use parentheses to override.
i.generates lists of consecutive integers, starting from zero.+/is a common pattern for summing elements in an array.
Common Mistakes:
* Forgetting the right-to-left evaluation and misinterpreting results.
* Using - for negative numbers when _ is required.
* Trying to assign variables immediately; focus on expressions first.
* Assuming standard operator precedence; use parentheses explicitly.
5. Now Try It
Using what you've learned, write a single J expression to calculate the product of the numbers from 1 to 7 (i.e., 7 factorial).
Look for a verb that generates integer ranges and an adverb that performs a product reduction. What success looks like: You get 5040 as the result.
Frequently asked about Introduction to 'j' and Foundational Concepts
Get the full j curriculum
Clone the complete plan to your dashboard for unlimited AI-generated notes, practice quizzes, and a personalised revision schedule.
Create Free Account