Orderless

Orderless

is an attribute that can be assigned to a symbol f to indicate that the elements ei in expressions of the form f[e1,e2,] should automatically be sorted into canonical order. This property is accounted for in pattern matching.

Details

  • The Orderless attribute for a function corresponds to the mathematical property of commutativity.
  • Functions with the Orderless attribute use canonical order as described in the notes for Sort.
  • For an object that represents a matrix or a tensor, the Orderless attribute represents symmetry among indices.
  • Functions like Plus and Times are Orderless.
  • In matching patterns with Orderless functions, all possible orders of arguments are tried.
  • The Orderless attribute must be assigned before defining any values for an Orderless function.

Examples

open allclose all

Basic Examples  (3)

Plus sorts its arguments because it has attribute Orderless:

Any orderless function will sort its arguments:

The pattern matcher reorders arguments of Orderless functions to obtain matches:

Note that Plus itself does not reorder these particular arguments:

Properties & Relations  (2)

All possible argument orderings are tried to match a definition for an orderless function:

Elements of an expression whose head is orderless are sorted into standard order:

This sorting occurs as part of the standard evaluation process:

Possible Issues  (1)

Pattern matching with orderless functions can lead to a large number of possible cases:

Wolfram Research (1988), Orderless, Wolfram Language function, https://reference.wolfram.com/language/ref/Orderless.html.

Text

Wolfram Research (1988), Orderless, Wolfram Language function, https://reference.wolfram.com/language/ref/Orderless.html.

CMS

Wolfram Language. 1988. "Orderless." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Orderless.html.

APA

Wolfram Language. (1988). Orderless. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Orderless.html

BibTeX

@misc{reference.wolfram_2023_orderless, author="Wolfram Research", title="{Orderless}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/Orderless.html}", note=[Accessed: 19-March-2024 ]}

BibLaTeX

@online{reference.wolfram_2023_orderless, organization={Wolfram Research}, title={Orderless}, year={1988}, url={https://reference.wolfram.com/language/ref/Orderless.html}, note=[Accessed: 19-March-2024 ]}