sous-expressions sans ordre je dois traiter avec des motifs comme f[{a,b}]=...
où a
et b
sont censés être sans ordre modèles avec
Sort[]
sur les sous-expressions chaque fois
f
est défini ou d'une évaluation.
Mes questions sont
- Est-ce aussi robuste que
Orderless
? - Y a-t-il un meilleur moyen?
PS: Un exemple d'application est la décomposition des arbres où vous construisez récursive des quantités comme sous-arbre [bag1-> bag2] où bag1 et bag2 sont des ensembles sans ordre de sommets
réponse mise à jour
Michael La réponse de Pilat montre comment définir une règle pour trier automatiquement les sous-expressions de f. Autre solution est de définir une tête personnalisée comme Bag
avec l'attribut sans ordre et utiliser cette tête pour toutes les sous-listes sans ordre
Ce n'est pas clair pour moi pourquoi vous n'utilisez pas Orderless ... –
Appliquer Orderless à quelle tête? J'ai besoin de a et b pour être sans ordre, ce que je représente comme des listes en ce moment. Si j'applique "Orderless" à la liste Head, cela fera * all * des listes sans ordre, pas vraiment ce que je veux –
Désolé, mais je deviens confus car orderless signifie commutativité, et pattern matching utilise ceci pour obtenir des correspondances qu'une entité ordonnée ne pourrait pas rencontre. (http://reference.wolfram.com/mathematica/tutorial/FlatAndOrderlessFunctions.html) Je ne comprends pas comment vous obtenez cela avec Sort []. –