4,505
edits
m (Text replacement - "<source" to "<syntaxhighlight") |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
Line 10: | Line 10: | ||
Use of the [[Rank operator]] allows a programmer to control which axes are used without referring to them explicitly (for example, by index). Rank, and more generally the [[leading axis theory]], uses the [[ravel order]] axis hierarchy directly without requiring another ordering to be imposed on axes. Despite this, the choice to make a positive operand to Rank specify a [[cell]] rank, while a negative operand specifies a [[frame]] length, weakly suggests an ordering that places trailing axes first and leading axes last—the opposite of the index ordering. | Use of the [[Rank operator]] allows a programmer to control which axes are used without referring to them explicitly (for example, by index). Rank, and more generally the [[leading axis theory]], uses the [[ravel order]] axis hierarchy directly without requiring another ordering to be imposed on axes. Despite this, the choice to make a positive operand to Rank specify a [[cell]] rank, while a negative operand specifies a [[frame]] length, weakly suggests an ordering that places trailing axes first and leading axes last—the opposite of the index ordering. | ||
The choice to give leading axes lower indices and trailing axes higher indices is related to the choice to put lower-order places at higher indices in the base representation functions [[Decode]] and [[Encode]]. This is known in the wider programming world as a [[wikipedia:Endianness|big-endian]] order. Because the base representation and axis ordering are in alignment, [[selection]] of an single element from an array satisfies the clean identity <syntaxhighlight lang=apl inline>i⌷A</ | The choice to give leading axes lower indices and trailing axes higher indices is related to the choice to put lower-order places at higher indices in the base representation functions [[Decode]] and [[Encode]]. This is known in the wider programming world as a [[wikipedia:Endianness|big-endian]] order. Because the base representation and axis ordering are in alignment, [[selection]] of an single element from an array satisfies the clean identity <syntaxhighlight lang=apl inline>i⌷A</syntaxhighlight> {{←→}} <syntaxhighlight lang=apl inline>((⍴A)⊥i)⌷,A</syntaxhighlight>. If base representation used the opposite order, both of Decode's arguments would need to be reversed. | ||
{{APL features}}[[Category:Array characteristics]] | {{APL features}}[[Category:Array characteristics]] |