J'essaie donc de créer une fonction qui prend une liste de mots et retourne les anagrammes dans une nouvelle liste. C'est ce que j'ai jusqu'à présent:Création d'une fonction de vérification des anagrammes dans Haskell
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
where
lesser = filter (< p) xs
greater = filter (>= p) xs
sub(a,[]) = []
sub(a,b:c) = if a == b then c else b:(sub(a,c))
sublist([],a) = a
sublist(a:b,c) = sublist(b,sub(a,c))
anagram a b = quicksort (a) == quicksort (b)
find a,[] = nil
find (a, b:c) = if anagram a b then b:(find(a,c)) else find(a,c)
listana [] = nil
listana (a:c) = list:(listana(sublist(list,a:c)))
where list = a:(find(a,c))
Je suis assez sûr qu'il y a un problème avec ma fonction de recherche. Oh et je suis nouveau à Haskell alors s'il vous plaît allez-y doucement sur moi.
Essayez d'ajouter des signatures de type explicites à vos fonctions. Les messages d'erreur de GHC devraient (espérons-le) vous aider à trouver le problème avec votre code. De plus, dans Haskell, vous pouvez écrire une fonction avec 2 arguments ('f :: (a, b) -> c') comme fonction carrée (' f :: a -> b -> c') – cdk