После того, как я ответил this question
, я проконсультировался с несколькими коллегами, которые согласились с тем, что следующий действительно лучший / типичный способ решения этой проблемы:
f[{a_, b_}] :=
f[{Sort[a], Sort[b]}] /; Not[OrderedQ[a]] || Not[OrderedQ[b]]
In[99]:= f[{{1, 2, 3}, {5, 4, 3}}]
Out[99]= f[{{1, 2, 3}, {3, 4, 5}}]
С другой стороны, выможно заменить внутренние List
головки на собственный символ головки с атрибутом Orderless
, и если форматирование действительно имеет значение, вы можете использовать различные методы форматирования, которые недавно обсуждались здесь =)