Comment comparer deux listes en Haskell?
En Haskell, comment pouvez-vous comparer les deux listes pour vérifier si elles sont égales? Aussi l'ordre ne compte pas.
Exemple:
[1,2] = [2,1]
J'ai essayé all (flip elem [1,2,3]) [2,1]
, mais cela renvoie true
...
Grâce.
Avez-vous vérifier ce lien stackoverflow.com/questions/6121256/...
Si l'ordre ne devrait pas d'importance, alors vous traiter comme des sacs, qui sont multisets. Il y a un paquet qui fait le travail, expliqué ci-dessous.
Si l'ordre ne devrait pas d'importance, alors vous traiter comme des sacs, qui sont multisets. Il y a un paquet qui fait le travail, expliqué ci-dessous.
OriginalL'auteur omega | 2013-03-10
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela?
Je n'ai aucune idée. Quel type et quelle taille sont les listes comparez-vous?
si vous vous souciez de l'efficacité, alors vous ne devriez probablement pas être à l'aide de listes de cette façon.
Data.Set
peut-être?Je pense que pour ce type de données, il ne doit obtenir mieux que cela.
OriginalL'auteur גלעד ברקן
Comme
Eq a => Eq [a]
(http://www.haskell.org/ghc/docs/7.4.1/html/libraries/base-4.5.0.0/Data-Eq.html)vous N'avez PAS besoin de code supplémentaire pour comparer les listes pour l'égalité.
Si vous voulez comparer les listes comme des sacs, puis un sac est un MultiSet, alors cherchez un Multiset paquet
OriginalL'auteur Gabriel Riba
Une bonne structure de données pour la "collection sans ordonnance ou de répétitions" est à partir du module
Data.Set
:Ce n'est, toutefois, envisager
[1,1]
être égale à[1]
, qui peut ne pas être ce que vous voulez.OriginalL'auteur Ben Millwood