Vocabulary/Glossary

From J Wiki
Jump to navigation Jump to search

Glossary of J terms

Addon A vendor- or author-maintained library of J applications and utilities for downloading on request by the J user.
Adverb An adverb modifies the word or phrase to its left to produce a derived entity which is usually a verb (though it may be any of the four primary parts of speech). More...
Agenda A verb encapsulated in a gerund may be extracted and activated as specified by use of the Agenda adverb.
Agree The arguments of a dyadic verb agree if their frames are identical, or one is a prefix of the other. More...
Ambivalent (of a verb) Able to be executed either as a monad or as a dyad.
Anonymous Having no name. Said of the result of an execution, which has no name unless one is then associated with it by an assignment.
Argument A noun value that is supplied to a verb when the verb is executed.
Array A noun comprised of atoms arranged along zero or more orthogonal axes. Each atom is identified by its index list, specifying one index value for each axis. J arrays are rectangular, meaning that all 1-cells contain an identical number of 0-cells (atoms), and all 2-cells contain an identical number of 1-cells (lists), and so on. The atoms of an array must all have the same type and precision. More...
Array of [***] A noun comprising cells, each of which is of some designated form: [***], arranged along 0 or more axes. Each cell is identified by its index list, specifying one index value for each relevant leading axis. More...
ASCII An interpretation of bytes according to the ASCII standard.
Assembly The final phase of execution of a verb, in which the results of its execution on individual cells are brought to a common shape by adding framing fill where necessary, and then assembled into an array whose frame with respect to result cells is the frame of the verb. More...
Assignment Assignment attaches a value to a name, thus defining or re-defining the name. A defined name will be replaced by its attached value whenever the name is executed. Assignments use the copulas =. and =:.
Atom Any single number, character, box, or symbol. An atom is a noun with rank 0, and is also called a scalar. More...
Atomic Representation A box whose contents serve to define all important aspects of a value. Every value, whatever its part of speech, has an atomic representation, which is a noun. More...
Axis One of the dimensions along which the atoms of an array are arranged. The atoms of every noun are arranged along zero or more axes, of finite length. Each unique list of nonnegative integers, each of which is less than the length of the corresponding axis, constitutes an indexlist for a unique atom of the noun. More...
Block See B-block.
B-block A sequence of sentences delimited by two controls, typically do. or case. and end. . More...
Bivalent See ambivalent.
Body (of an explicit entity) A sequence of sentences that are executed one by one when the entity is invoked.
Boolean A numeric precision whose value is restricted to the values 0 and 1. Comparisons and tests, such as =, <, and e., produce Boolean values. In accordance with the Iverson convention, these Boolean values are identical to the numeric values 0 and 1 and can participate in numeric expressions.
Box Any noun can be enclosed in a box to create a new noun, an atom whose type and precision are "boxed". The noun so enclosed is the contents of the box. The contents of the box can be recovered by opening the box. Boxes can be arranged in an array even if their contents differ in shape or type, producing a heterogeneous array. More...
Boxed A type and precision of noun. A noun is boxed if its atoms are boxes. More...
Boxing Enclosing a noun of arbitrary type in a box to produce an atom. More...
Boxing Level For an unboxed or empty noun, 0; otherwise, one more than the highest box-nesting level of the contents of its atoms.
Boxing Path A list of boxes used to designate a boxed or unboxed subarray of items inside a boxed noun b. The first atom of the boxing path p contains an index list selecting atoms of b; which are then opened. The contents of the next item of p select atoms from within their respective opened subarrays; and so on, until p is exhausted. The atom or larger array selected by the cumulative index lists of p is the subtree of b designated by p. It retains the original containment relationships between the selected elements, without the non-selected elements.
Brick An array of rank 3; a three-dimensional array. More...
Brick of [***] An array whose _3-cells are of some designated form: [***]; as in "brick of 3-item lists".
Byte A character precision with 256 different 8-bit values.
Call by name (of a word in a sentence during execution) Referring to an operand by using its name. Named verbs, adverbs, and conjunctions are passed by name, except for the special names u, v, u., and v..
Call by reference (of a word in a sentence during execution) Referring to an operand by pointing anonymously to its value. In J, all words that are not passed by name are passed by reference. This occurs whenever a verb is applied to the result of an expression without an intervening assignment.
Carriage Return The byte: ASCII 13, the value of public noun CR.
Cell A subarray of a noun consisting of all the atoms of the noun whose index lists share a common prefix. For nonnegative k, each k-cell of a noun whose shape is s has the shape ((- k <. #s) {. s) and together they can be assembled to reconstruct the noun. For negative k, the k-cells are defined to be the (0 >. k + #s)-cells.


0-cells are atoms, 1-cells are lists, 2-cells are tables, and 3-cells are bricks. _1-cells of a table are lists, _2-cells are atoms. More...

Character A type of noun representing one or more alphabetic and other characters. Character precisions include byte and unicode.
Collection See assembly.
Common Frame (when executing a dyadic verb) The shorter of the argument frames. More...
Comparison Tolerance The system setting that specifies the maximum relative difference between two values that will be considered tolerantly equal. Set by 9!:19, read by 9!:18; can be temporarily overridden by the Fit conjunction !.f.
Complex A numeric precision that stores the real and imaginary parts of complex numbers in IEEE-754 double-precision floating-point format.
Compound Verb A tacit definition formed from primitive verbs using a modifier such as Atop (@) or Fork.
Conjunction A conjunction modifies the words or phrases to its left and right to produce a derived entity which is usually a verb, though it can be any of the four primary parts of speech. More...
Constant A word that represents a number, a character in quotes (e.g. 'a'), or a list of either type.
Contents (of a box) The noun that is enclosed in a box. The contents can be recovered by opening the box with Open: <t>></t>). More...
Control See Control Word.
Control Word A primitive name, inflected with a period (.), that controls program flow. A control word ends the preceding sentence and is not part of any sentence. More...
Copula One of the parts of speech, signifying an assignment of a value to a name. The copulas are Is (Local) (=.) and Is (Global) (=:).
Current Locale See implied locale.
Debug Thread The thread that debugging commands are executed in.
Defined (of a name) Having a place and a [#Value|value]] in a namespace as a result of having been the target of an assignment.
Definition J code which, when executed, creates an entity, often specified by use of the Explicit conjunction (:) , that creates an explicit entity.
Derived Entity The result of executing an adverb or conjunction. Usually a verb. If the part of speech of a derived entity is known, it may be called, for example, a derived verb. More...
Derived Value A synonym of Derived Entity.
Direct Definition An explicit entity created by exclosing the body of the entity inside {{ }}.
Dyad (dyadic) A verb which executes with both left and right arguments (x- and y-arguments). For a dyadic execution to occur, the verb must have a dyadic valence defined. More...
Element A noun, a candidate item of an array.
Empty (of an array) Having no atoms. An empty array has 0 in its shape - but still it may have items, if they are also empty (e.g. 4 0 3$0). More...

(of an argument of a verb) Having no cells; having a 0 in the frame of its argument.

end. A control word, terminating sequences of sentences which begin with if. , for. , for_ijk. , while. , or whilst. .
Entity A noun, verb, conjunction, or adverb. An entity is either a word in a sentence or a derived entity resulting from execution. Entities participate in execution and are used as values in assignment.
Execution The process of replacing a verb and its arguments on the execution stack with the noun result from applying the verb to those arguments; or from converting a fragment into a derived entity in accordance with the definition of the fragment, and replacing the fragment on the execution stack by a single synthetic word referring to the derived entity. Execution of a sentence proceeds generally right to left and ends with a single result which may be any type of entity.
Execution Stack The set of words of a sentence that have been examined by parsing in the search for an executable fragment, as modified by the replacements performed by execution.
Explicit Definition The J code, beginning with a type specification and the Explicit conjunction (:), or enclosed inside {{ }} in a direct definition, that creates an explicit entity.
Explicit Entity A noun explicit entity is a character string which may contain multiple lines of text of any sort, including dormant lines of code. A non-noun explicit entity has a body whose sentences may be executed one by one. While the body is being executed, the entity has its own private namespace. Explicit entities are created by the : conjunction or by its synonym define, with noun operands (m : n), or by direct definition by enclosing the text of the entity inside {{ }}. The arguments/operands to an explicit entity are referred to by the special names x, y, u, v, m, n, u., and v., which are initialized locally in the private namespace of the entity when the body starts execution.
Explicit Locale A locale identifier appended to a simple name to create an explicit locative. More...
Explicit Locative A locative of the form simplename_explicitlocale_ indicating that the search for simplename will start in the locale explicitlocale and, if need be, follow its search path. More...
Extended Integer A numeric precision that stores integers of arbitrary size with complete precision.
Fill Atoms appended to a noun to extend the shape of the noun to a required shape, especially when the noun must be extended because it is being made a cell in an array whose cells are bigger than the noun. See also FramingFill.
Fill Atom The atomic value used for each atom of a fill action. It defaults to 0, ' ', a:, or s:'', matching the type of the value being filled.
Fill Cell A cell of fills, used as an argument to a verb when the verb's frame contains a 0.
Floating Point A numeric precision that stores numbers in IEEE-754 double-precision floating-point format.
Foreign A system function or platform service, e.g. date, time, or I/O, called via the primitive: Foreign (!:).
Fragment Two or three of the top four words on the execution stack which are executable according to the parsing rules.
Frame (k-frame of a noun) The frame of a noun with respect to k-cells is the shape of the noun with the last r items removed, where r is the rank of a k-cell of the noun. When a noun is viewed as an array of k-cells, the frame with respect to k-cells is the shape of the array of k-cells.


(of an argument to a verb) The r-frame of the argument, where r is the implied or explicit rank of the verb for that argument. More...

(of an execution of a verb) The argument frame for a monad, or the argument-frame pair for a dyad. Also called the result frame of the execution. More...

Framing Fill Fill atoms may be needed when the results from applying a verb to its argument cells are being joined into an array. Framing fills are always the defaults: 0, ' ', a:, s:'', matching the type of the result. See also Verb Fill. More...
Fret An item that marks the start (or end) of an interval along an axis.
Functional Programming A method of writing programs that describes only the operations to be performed on the inputs to the programs, without the use of temporary variables to store intermediate results. J's tacit programs are an example of functional programming. Aficionados of functional programming consider it to express algorithms more purely than a procedural language; expert J programmer Randy MacDonald has said, "If you're not programming functionally, you're programming dysfunctionally".
Gerund The atomic representation of a verb, or a list thereof. A gerund, which is a noun, can be used in places where a verb value cannot be, for example as an argument to a verb or to represent a list of verb values. A verb may be selected and activated by use of the Agenda adverb.
Global (of a name) Being defined in the locale z, found by default in every locale's search path, and thereby accessible as a simple name by any verb. (The J Dictionary used the word global to mean 'not private', a broader meaning which corresponds to the term public in [[NuVoc|NuVoc pages].)
Head The first, index-0, item along an axis.
Identity Element The identity element iu of a dyadic verb u is the value that satisfies y = iu u y and y = y u iu for all y in the domain of u . Also called the neutral.
Identity Function A monad that produces an identity element of a shape appropriate for a single item of its y argument. If ig is the identity function for g, then ({.y) g ig y equals {.y for all y. More...
Idle Thread A thread that is not executing a task or waiting for user input.
Implied Locale The locale that will be used at a given time for public assignment and name searches of simple names. More...
Index In an array, an integer indicating position along an axis. The index of the first position along an axis is 0 . More...
Index List (of an atom) A list of integers with the same length as the shape of a noun, designating an atom of the noun by giving its position along each consecutive axis. More...
Inflection Period (.) and/or colon (:) characters appended to the end of a name or ASCII graphic character to produce a new and independent primitive. Also, the action of adding such characters.
Infinity The floating point numeric values representing positive or negative infinity: <t>_</t> and <t>__</t> .
Infix Any sequence of consecutive items along an axis of a noun.
Integer A numeric precision that stores integers at machine precision (either 32 or 64 bits per number).
Interval Any sequence of consecutive indexes or cells along an axis of a noun.
Invocation A phrase that executes a verb with a y-argument [and an x-argument], yielding a noun.
Item A _1-cell of a noun. An array is a list of its items, which are cells of rank 1 less than the rank of the array. An atom has one item, itself. The items of a list are atoms; the items of a table are lists. More...
Iverson Bracket A mathematical notation (not used in J), where [P] equals 0 if the predicate P is false, 1 if P is true.
Iverson Convention The use of the integers 0 and 1 to represent false and true.
Leaf A level-0 box, one whose contents are unboxed, possibly empty. A leaf may itself be part or all of the contents of another box.
Level See Boxing level.
Line A text substring delimited by linefeeds or termini. More...
Linefeed The byte: ASCII 10, the value of public noun LF.
List (when used without qualification) An array of rank 1; a one-dimensional array.
List of [***] An array whose items are of some designated form: [***]; as in 'list of 3-atom lists'.
Literal A synonym of byte, or "Constant"
Local See private.
Locale A public namespace. Each public name is defined in a locale. A locale is identified by a locale name which is a character string not containing an underscore. More...
Locative A name composed of both a simple name and a locale name in which the search for the name's value will begin. A locative is either an explicit locative, denoted by a locale name between single underscores, or an object locative, denoted by a chain of one or more locale names, each preceded by a pair of underscores.
Matrix See table.
Master Thread The thread that J starts running in. The master thread is thread number 0. The master thread is not part of any threadpool and is never idle.
Modifier An adverb or conjunction. Creates a derived entity (typically a verb) combining the effects of its operands. More...
Monad (monadic) A verb which executes with no left argument. For a monadic execution to occur, the verb must have a monadic valence defined. More...
Name A word that begins with a letter and contains letters, numerals, and underscores. A name can be the target of assignment. A name is either a simple name or a locative. More...
Namespace Either a named locale or a private namespace associated with a running explicit entity. More...
Neutral A synonym of identity element.
Newline A synonym of Linefeed: ASCII 10, the value of public noun LF..
Noun One of the four primary parts of speech. An atom or positive-rank array of atoms. Nouns hold the data that verbs operate on. More...
Number A numeric atom, whether (part of) a program's constant or computed by its operations.
Numeric A type of noun representing numbers. Numeric precisions include Boolean, integer, extended integer, rational, floating point, and complex. The formats of numeric constants are defined here.
Object Locale The value of the sequence of attached names of locales or locale-valued names in an object locative. The first object name is evaluated in the current namespace; its value initializes the object locale, and each subsequent object name (if any) is evaluated in the then-current object locale with its value replacing the object locale. The value of the object locale after all names have been evaluated is the locale in which the search for the simple name of the locative begins. More...
Object Locative A locative of the form simplename__objname[s] indicating that the search for simplename will start in the object locale given by the resulting value of the objname[s] and will then follow its search path. More...
Object Name (as part of an object locative) A name, preceded by double-underscore (__) and extending to the next double-underscore or the end of the locative. More...
Obverse By default the inverse of a verb, or a user-chosen verb attached to it via Assign Obverse (:.) .
Open (as description) See unboxed.

(as primitive) Open: <, which returns the contents of a box. More...

Opening The act of recovering the contents of a box. See open. More...
Operand A noun or verb value supplied to a modifier when the modifier is executed.
Outerval The indexes, or cells, remaining after deletion of an interval.
Outfix The remainder of an array after removal of an infix.
Parsing The right-to-left search for executable patterns in a sentence. A word from the sentence is pushed onto the execution stack, with a named noun being replaced by its value and other names replaced by a reference to the name. As soon as the top elements of the stack contain an executable fragment, that fragment is executed and replaced by the result of the execution. More...
Part of Speech One of the seven categories into which words are classified; or, a word or entity so classified. Every word has a part of speech: for primitives, the part of speech is color-coded in the [[NuVoc|NuVoc pages]; for names, the part of speech is that of the value assigned to the name. The parts of speech are: noun, verb, adverb, conjunction, punctuation, copula, control word. More...
Partition A selection of (possibly non-contiguous) items of an array, brought together as the items of a new array, perhaps to be operated on by a verb. A partitioning action allocates each item of an array to one of several partitions exactly once, usually retaining their relative order.
Path (of locale names) See search path.

(within a boxed noun) See boxing path.

Phrase Part of a sentence that evaluates to an entity.
Precision An attribute of a noun, indicating the range of data values that can be represented within its type. More...
Prefix An infix that includes the first, or head, index-0 item.
Primary Part of Speech A subset of the parts of speech, viz. noun, verb, conjunction, and adverb.
Primitive A word whose meaning is assigned by the J language, as listed in the NuVoc pages. More...
Private (of a name) Assigned in the namespace of an explicit entity and accessible only during execution of that explicit entity in which it was assigned. More...
Pronoun A term used for a name itself to distinguish it from its assigned noun value. This distinction is seldom observed in J documentation (or other computing literature).
Proverb A term used for a name itself to distinguish it from its verb value. This distinction is seldom observed in J documentation (or other computing literature).
Public (of a name) Assigned within a locale and also accessible from any other locale via a locative. More...
Punctuation A part of speech. Punctuation is not executed, but it affects the execution of other words. Punctuation in J comprises ', (, ), {{, }}, and NB..
Pyx A result created by a task. A pyx is an atomic box and behaves like any other box until it is opened. At that point the opening thread is blocked until the task creating the pyx completes. If the task completed with an error, the error will be signaled in the opening thread. For the meaning of the word, see Trial of the Pyx
Rank (of a noun) The number of axes along which the atoms of the noun are arranged; the number of items in its shape. More....


(of a verb) The highest rank[s] of the [left and] right noun arguments that the verb can operate on directly. More...

Rational A numeric precision that stores rational real numbers of arbitrary size with complete precision.
Recursive (of a verb) Able to make a call to itself during its execution.
Result (of an execution fragment) The value produced by executing the fragment; the fragment is replaced on the execution stack by a synthetic word representing the result.


(of a sentence) The result of the last fragment executed in the sentence.

(of an entity) The result of the last sentence executed in the entity.

Scalar An atom. "Scalar" is a mathematical term used to distinguish such values from vector and matrix arrays.
Script A text file containing J code, usually in the form of sentences.
Search Path (of a locale loc) The list of the names of locales that will be searched to find the definition of a name originally sought, but not found in loc. More...
Selector An atom used as the specification for finding one or more items of an array, e.g. by From ({).
Sentence The entire executable portion of a line. More...
Session A display window of the chosen version of J IDE (called "Term" in JQt, or "IJX" in j602) which shows the results of running J in immediate mode.
Shape The list of the lengths of the axes of a noun. More...
Simple Name A consecutive sequence of letters, numbers, and underscores, used to refer to an entity. It begins with a letter, does not contain two consecutive underscores, nor end with an underscore unless it contains only one underscore. More...
Singleton An atom or a one-atom array of any positive rank.
Sparse Array An array in which only atoms differing from the sparse element are stored.
Sparse Element An atomic value associated with a sparse array. Usually s: 0 for numeric arrays.
Special Combination A phrase recognised by J as suitable for efficient execution via special code.
Starting Locale The locale specified in a locative. If that locale does not contain the designated entity, a search for it begins via that locale's Search Path. See that link for details. More...
String See character.
Subarray The result of selecting an interval or outerval or whole range from each axis of an array. A selection of arbitrary subsets along some axes may be termed a "sparse subarray" (not to be confused with a sparsely stored array.)
Suffix An infix that includes the last, or tail, index-_1 item.
Surplus Frame (when executing a dyadic verb) The part of an argument frame that is not in the common frame. More...
Suspension When debugging is enabled, any error (including a stop) causes execution to pause, with the state of all executing entities available for review, modification, and restart of execution. During the pause in execution, each executing entity is said to be suspended.
Symbol A type and precision. A symbol is a name which represents an unmodifiable list or string of characters that has been put into the J session's symbol table.
Table An array of rank 2; a two-dimensional array. More...
Table of [***] An array whose _2-cells are of some designated form: [***]; as in "table of 3-item lists".
Tacit Definition The definition of a tacit verb, consisting of a train of words.
Tacit Verb A verb that executes without its own private namespace and refers to its argument(s) implicitly.
Tail The last, index-_1, item along an axis.
Task A verb and its arguments, executing in a thread to produce a pyx. All locales are shared by all tasks.
T-block A block that yields a single array value: the last noun evaluated within it. This block starts with if. , for. , for_ijk. , while. , or whilst.--and finishes with do. .
Thread An environment that a task can be executed in. Threads often execute on different hardware. When J starts, it executes in the master thread, thread 0.
Threadpool A group of worker threads. Each threadpool has a unique number. Threadpool 0 is used by the system for multithreaded primitives, and can also be used by tasks.
Tolerance See tolerant comparison.
Tolerant Comparison Numeric comparison, in which at least one of the values may be of an inexact type, that considers the values to be equal if the difference between them is less than the absolute tolerance. A system setting, the comparison tolerance, is used to calculate the absolute tolerance. For dyadic comparisons, the absolute tolerance is the comparison tolerance multiplied by the larger of the magnitudes of the two comparands. For monadic comparisons (where one comparand is assumed to be <t>0</t>), the absolute tolerance is equal to the comparison tolerance. More...
Train A sequence of words that when executed produces a non-noun result, typically a verb.
Type An attribute of a noun: numeric, character (also called string), boxed, or symbol. Each type-class comprises one or more precisions. More...
Unbox See open (verb).
Unboxed Not having atoms that are boxes. More...
Undefined Name A valid name that has yet to be assigned a value.
Unicode A character precision with 65536 different (2-byte) values (the Frame-0 Unicode characters).
Unicode4 A character precision with 1052672 different (20-byte) values (the Unicode characters).
UTF-8 A method of representing unicode character values as a sequence of bytes according to the UTF-8 standard.
Valence (of a verb definition) The number of noun arguments the definition can accept: 1 if monadic, 2 if dyadic, either 1 or 2 if dual-valence. More...


(of the execution of a verb) The number of arguments supplied to the verb: monadic if 1, dyadic if 2.

Value An entity that can be attached to a name through assignment. When a name is encountered during execution of a sentence, it is replaced by its current value. A value may be a noun, verb, adverb, or conjunction; for example, assigning a verb value to a name produces a defined verb. More...
Vector See list.
Verb One of the four primary parts of speech. A verb operates on a noun to its right (and its left, if it is dyadic and a noun is to its left) to produce a noun result. More...
Verb Definition The definition of a verb, often (by implication) an explicit definition.
Verb Fill Fill added by a verb during processing of a cell when the verb operates on cells that are smaller than the rank of the verb; contrasted with framing fill. The Fit conjunction !.f can be used with some verbs to specify a non-default fill atom f for verb fill.
Void Argument A throwaway value for the mandatory [x or] y argument of a verb to be executed. A verb is executed only when it has a y argument, even if the value of the argument is ignored. (A name typed without an argument displays the value of the name).
Whitespace A string of one or more non-printing bytes, the Space and TAB characters, which J accepts as syntactically equivalent to Spaces. (Unlike the usage in C/C++, it does not include CR or LF.)
Word A sequence of characters in a sentence, recognized as a lexical unit. A word is either a name, a primitive, a constant (which may be a number or a character or a list of either), or a synthetic word used to refer to the result of an execution. More...
Worker Thread A thread that is not the master thread, distinguished by its thread number, which is always greater than 0. A worker thread is permanently assigned to a specified threadpool when it is created.