Grade: Difference between revisions

Jump to navigation Jump to search
1,937 bytes added ,  17 February
History
m (Text replacement - "</source>" to "</syntaxhighlight>")
(History)
Line 100: Line 100:


[[J]] does not implement dyadic grade, but provides '''Sort By''' as the dyadic counterparts of <syntaxhighlight lang=j inline>/:</syntaxhighlight> and <syntaxhighlight lang=j inline>\:</syntaxhighlight> instead.
[[J]] does not implement dyadic grade, but provides '''Sort By''' as the dyadic counterparts of <syntaxhighlight lang=j inline>/:</syntaxhighlight> and <syntaxhighlight lang=j inline>\:</syntaxhighlight> instead.
== History ==
In [[A Programming Language]], Grade is referred to as the ordering of a vector and written <math>\theta_j/x</math> for vector <math>x</math> and index origin [[index origin]] <math>j</math>: a special use of the slash that otherwise indicates [[Compress]]. The requirement that indices for equal elements should retain their indices (stable sorting) is mentioned explicitly.
Grade up and down were defined with the standard glyphs <syntaxhighlight lang=apl inline>⍋⍒</syntaxhighlight> and [[index origin]]-dependent definition in [[APL\360]]. By 1968 it had been defined to grade along a particular [[function axis|axis]], defaulting to the last;<ref>[[IBM]]. [http://www.softwarepreservation.org/projects/apl/Manuals/APL360CONTRIBUTEDPROGRAMLIBRARY/view Contributed Program Library: APL\360]. 1968.</ref> however, this extension has often not been maintained in later APLs.
[[SHARP APL]] extended Grade to sort the [[major cell]]s of its argument, and introduced the dyadic Grade functions,<ref>Peter Wooster. "Extended Upgrade and Downgrade". SATN-35. 1980-09-15.</ref> following a suggestion by Howard Smith of [[IBM]] motivated by string sorting.<ref>Howard J. Smith. [https://dl.acm.org/doi/10.1145/800136.804449 Sorting - a new/old problem] at [[APL79]].</ref> While sorting cells is consistent with [[leading axis theory]], it predates the beginning of this model's development in 1982. The extension to monadic Grade is incompatible with APL\360's definition of grading along an axis. Both extensions were widely adopted at the time, for example in the first versions of [[Dyalog APL]].<ref>Stephen Taylor. [http://archive.vector.org.uk/art10013790 "How we got here"]. [[Vector journal]] Volume 23 special supplement "Dyalog at 25". 2008-09.</ref> Newer dialects such as [[Kap]] often don't implement dyadic Grade (which was also left out of [[J]] in favor of [[Sort by]]).


== External links ==
== External links ==
Line 115: Line 123:
* [https://www.dyalog.com/blog/2018/04/dyadic-grade/ Dyadic Grade] by [[Roger Hui]], Dyalog Blog
* [https://www.dyalog.com/blog/2018/04/dyadic-grade/ Dyadic Grade] by [[Roger Hui]], Dyalog Blog
* [https://github.com/abrudz/Sort abrudz/Sort] library: Examples of sorting variations ([[Atomic vector|Classic]], [[wikipedia:Natural_sort_order|Natural]], Danish, Finnish, German) using dyadic grade
* [https://github.com/abrudz/Sort abrudz/Sort] library: Examples of sorting variations ([[Atomic vector|Classic]], [[wikipedia:Natural_sort_order|Natural]], Danish, Finnish, German) using dyadic grade
== References ==
<references/>
{{APL built-ins}}[[Category:Primitive functions]]
{{APL built-ins}}[[Category:Primitive functions]]

Navigation menu