Donc je suis nouveau à haskell et je joue avec lui depuis un moment maintenant. Je veux obtenir ma fonction qui produit toutes les permutations de liste pour fonctionner. J'ai écrit 2 implémentations, l'une fonctionne bien, l'autre me donne une erreur. Toute aide serait géniale.permutations de liste dans haskell
Ceci est le premier (travail) mise en œuvre:
permute [] = [[]]
permute xs = [y| x <- xs, y <- map (x:) $ permute $ delete x xs]
Celui-ci me donne une erreur:
permute [] = [[]]
permute xs = map (\x -> map (x:) $ permute $ delete x xs) xs
et voici le message d'erreur:
Occurs check: cannot construct the infinite type: t0 = [t0]
Expected type: [t0]
Actual type: [[t0]]
In the expression: map (x :) $ permute $ delete x xs
In the first argument of `map', namely
`(\ x -> map (x :) $ permute $ delete x xs)'
Je d apprécier si quelqu'un pourrait expliquer pourquoi je reçois cette erreur. Merci
Notez que cette approche avec 'delete 'est plutôt inefficace. – leftaroundabout
Merci pour les heads up, je prévois de vérifier la mise en œuvre dans Data.List – turingcomplete