Nested array: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Marshall
(Created page with "In nested array theory, a nested array is an array of depth greater than one, that is, an array that contains at least one element which is not a simple scalar. It...")
 
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
(10 intermediate revisions by 5 users not shown)
Line 1: Line 1:
In [[nested array theory]], a nested array is an array of [[depth]] greater than one, that is, an array that contains at least one element which is not a [[simple scalar]]. It is roughly equivalent to a [[Box|boxed]] array in [[flat array theory]]; more precisely, non-[[mixed]] nested arrays correspond exactly to boxed arrays. Depending on language, an [[empty]] array may never be considered nested, or it may be considered nested if its [[prototype]] is nested.
In [[nested array theory]], a '''nested array''' is an array of [[depth]] greater than one, that is, an array that contains at least one element which is not a [[simple scalar]]. It is roughly equivalent to a [[Box|boxed]] array in [[flat array theory]]; more precisely, non-[[mixed]] nested arrays correspond exactly to boxed arrays. Depending on language, an [[empty]] array may never be considered nested, or it may be considered nested if its [[prototype]] is nested.


[[Scalar functions]] descend into nested arrays one element at a time. Arrays can be nested at an arbitrary depth so this descent constitutes a traversal. Nested arrays form a [[tree]] structure with some additional information (the [[shape]]) at each node.
[[Scalar functions]] descend into nested arrays one element at a time. Arrays can be nested at an arbitrary depth so this descent constitutes a traversal. Nested arrays form a [[tree]] structure with some additional information (the [[shape]]) at each node.


A nested array is a kind of [[pointer array]] and is almost always stored using pointers.
A nested array is a kind of [[pointer array]] and is almost always stored using pointers.
The result of [[Enclose]] on an array other than a [[simple scalar]] is always a nested array. The [[Dyalog APL]] primitive [[Nest]] (<syntaxhighlight lang=apl inline>⊆</syntaxhighlight>), which encloses a [[simple]] argument, is named for this property: it applies the smallest transformation to turn the argument (unless it is a simple scalar) into a nested array.
== See also ==
* [[NARS]], the first commercial nested APL implementation.
{{APL features}}[[Category:Kinds of array]][[Category:Nested array model]]

Latest revision as of 22:01, 10 September 2022

In nested array theory, a nested array is an array of depth greater than one, that is, an array that contains at least one element which is not a simple scalar. It is roughly equivalent to a boxed array in flat array theory; more precisely, non-mixed nested arrays correspond exactly to boxed arrays. Depending on language, an empty array may never be considered nested, or it may be considered nested if its prototype is nested.

Scalar functions descend into nested arrays one element at a time. Arrays can be nested at an arbitrary depth so this descent constitutes a traversal. Nested arrays form a tree structure with some additional information (the shape) at each node.

A nested array is a kind of pointer array and is almost always stored using pointers.

The result of Enclose on an array other than a simple scalar is always a nested array. The Dyalog APL primitive Nest (), which encloses a simple argument, is named for this property: it applies the smallest transformation to turn the argument (unless it is a simple scalar) into a nested array.

See also

  • NARS, the first commercial nested APL implementation.


APL features [edit]
Built-ins Primitives (functions, operators) ∙ Quad name
Array model ShapeRankDepthBoundIndex (Indexing) ∙ AxisRavelRavel orderElementScalarVectorMatrixSimple scalarSimple arrayNested arrayCellMajor cellSubarrayEmpty arrayPrototype
Data types Number (Boolean, Complex number) ∙ Character (String) ∙ BoxNamespaceFunction array
Concepts and paradigms Conformability (Scalar extension, Leading axis agreement) ∙ Scalar function (Pervasion) ∙ Identity elementComplex floorArray ordering (Total) ∙ Tacit programming (Function composition, Close composition) ∙ GlyphLeading axis theoryMajor cell search
Errors LIMIT ERRORRANK ERRORSYNTAX ERRORDOMAIN ERRORLENGTH ERRORINDEX ERRORVALUE ERROREVOLUTION ERROR