Total array ordering

In APL, a total array ordering, or TAO, is an ordering on all arrays which is used primarily by Grade and Interval Index, but optionally also by the comparison functions. Traditionally ordering is defined only for simple arrays of the same shape and type, so TAO refers to the extension to nested or boxed arrays of arbitrary rank, shape, and type.

J has had such an ordering since 1996 (release 3.01). Dyalog APL added a total array ordering with version 17.0. Both of these are based on a lexicographic ordering. GNU APL and NARS2000] also implement total ordering, but based on [[wikipedia:shortlex ordering instead.

Dyalog's ordering is not a true total order because it does not handle arrays containing simple scalars other than nulls, numbers or characters, namely namespaces and objects. Roger Hui has argued that these scalars are not truly arrays, and are not in the scope of a total array ordering.

The name total array ordering is taken partly from the mathematical concept of a total order, which must order any two elements, with elements ordering equally only if they are identical. This concept is transferred to APL by specifying that arrays should only order equally if they match.

Documentation

 * Dyalog APL
 * J
 * GNU APL