Terms

The Language overview introduces these terms informally, as they come up.

Every value is an atom or an array: atoms are numbers, characters, functions and operators, scalars are arrays of rank 0, units are atoms and scalars, and subjects are all values except functions and operators.

Term Meaning
value a number, character, function, operator or array
atom a value that isn’t an array: a number, character, function or operator
number an approximate real or complex number, or an exact integer or rational, as Numbers describes
Mathish types ordinary exact numbers, 64-bit floats and complex numbers with 64-bit parts, under dynamic kinds. Fixed-integer calculations are excluded. Mathish mode applies its conventions when enabled
character one Unicode character, written in single quotes: 'a'
primitive a built-in function or operator, written as one glyph: + or /
dfn a function or operator written in braces, as Dfns describes: {⍵+1}
function a primitive, train, derived function, or dfn that doesn’t use ⍶ or ⍹, which applies to arguments
operator a primitive, or a dfn that uses ⍶ or ⍹, which takes operands and derives a function: / derives +/ from +
derived function a function that an operator derives: +/, or 2↣×
pervasive function a function that applies to each atom of its arguments, through any nesting: ≥[2 ⊂3] is [3 ⊂4]
array a rectangular collection of values along zero or more axes
rank the number of axes: a vector has rank 1, and atoms and scalars have rank 0
vector an array of rank 1
matrix an array of rank 2
string a vector of characters, written in double quotes: "abc"
scalar an array of rank 0, holding one value: ⊂5 is a scalar holding the number 5, and 5 is a number
unit a rank-0 value: a number, character, function, operator or scalar
subject a value that isn’t a function or operator: a number, character or array
item the value at one position of an array: [1 [2 3]] has the items 1 and [2 3]
position an index along an axis, counting from 0. Negative positions count from the end
axis one of the dimensions of an array, numbered from 0. Each axis has a length, and can have a name and keys
key a string that labels a position along an axis, as Keyed arrays describes
record a vector with keys, written as key:value items in brackets: ["a":1 "b":2]
cell a sub-array made of an array’s last k axes, called a k-cell: a matrix’s rows are its 1-cells. A 0-cell is the unit at one position, the atom there or the array there enclosed. When k is at least the array’s rank, the whole array is its one cell
major cell a cell made of every axis but the first: a matrix’s rows are its major cells
frame the axes before the cells, with one cell at each position
assembly building one array from results, one for each position of a frame: the shape is the frame followed by the results’ shape, each result fills its position with its items, and shorter results are padded with fill
function array an array with a function as an item. Evaluation gives the rule for calling one: 2 [+ ×] 3 is 5 6
map a call of Each, Rank, an outer product or a stencil, which applies its operand at each position of a frame: to each item, cell, pair of items or window. These are the map’s cells. Evaluation describes how a map calls its operand
fill the value an operation uses where an array has no item, as when 5↑1 2 gives 1 2 0 0 0. It comes from the array’s prototype: its first item with each number made 0, each character made a space, and each function kept
selection values read from an argument together with their places in it, as a list of positions or a function such as 1↓ reads them
glyph a symbol for a primitive or for syntax, as the glyph reference lists
name a word that refers to a value, as Syntax describes: x or avg
statement the code between two newlines or ⋄ separators. Inside brackets and parentheses, these separate rows instead
literal a number, character, string, ∞, ⍬, or a constant: $t true, $f false or $n NaN
group brackets, parentheses or braces with what they hold: (1+2), [a b] or {⍵}
token a glyph, name, literal or group
run a sequence of tokens with no spaces between them
strand subjects side by side, read as a vector without brackets: 1 2 3 is [1 2 3], and a b is [a b]
argument a subject a function applies to
operand a value an operator applies to
monadic taking one argument, or for an operator, one operand: -5 is a monadic call
dyadic taking two arguments, or for an operator, two operands: 3-5 is a dyadic call
expression a run, group or statement that ends in a subject
train a run, group or statement that ends in a function
part one of the pieces a train is built from: a literal strand, or a token with the operators bound to it, such as 2, +/ or (+×-)
fork three parts of a train, f g h, giving (f ⍵) g (h ⍵)
tine one of the two outer parts of a fork
atop two parts of a train, f g, giving f (g ⍵)
bind a subject directly before a part, fixing that part’s left argument: 2× is 2↣×, and in 2\|#⊢ the 2 binds \|
fast combination a train, composition or operator application that BPL computes by a faster algorithm than applying its parts in turn, with the same result: 10↑⍋ v