La raison sous-jacente b+c+a+d
devient a+b+c+d
dans Mathematica est parce que Plus
a l'attribut Orderless
. En général, un symbole f
avec l'attribut Orderless
signifie que les éléments de f
dans un expession f[e1, e2, e3]
, les éléments ei
doivent être classés dans l'ordre canonique, et en particulier, l'ordre canonique de Mathematica équivalent à celui de OrderedQ
et Ordering
.
Orderless
est même représenté au cours de correspondance de motif:
In[47]:= a+b+c+d /. a+c -> e
Out[47]= b+d+e
Il est fortement, fortement recommandé que vous ne supprimez pas l'attribut Orderless
de Plus
parce que les conséquences pourraient être désastreuses pour de nombreuses fonctionnalités dans Mathematica.
Comme d'autres affiches l'ont noté, le mieux est de simplement définir votre propre fonction qui n'est PAS Orderless
, et donc de préserver l'ordre des arguments. Vous pouvez également trouver HoldForm
utile dans des circonstances très limitées.
Notez également que rien ne vous empêche de symboles typesetting dans une expression dans l'ordre que vous voulez dans un ordinateur portable, aussi longtemps que vous n'évaluez en place non, etc.
+1 très propre! Encore un char à faire ... –