J'essaye de faire une fonction qui cherchera 3 nombres identiques et adjacents donnés une liste, pour un solveur que j'essaye de mettre en application. Ensuite, s'il y a 3 nombres identiques et adjacents, les 1er et 3e chiffres identiques seront marqués à '0' et la valeur moyenne sera négative.Haskell récursion utilisant un accumulateur
Je me demande pourquoi cela me donne une erreur .:
change xs = chnge xs []
where
chnge xs acc
| length xs <= 2 = [acc]
| (head xs == xs !! 1) && (head xs == xs !! 2) = [0, (xs !! 1)*(-1), 0] ++ tail xs
| otherwise = chnge (tail xs) (acC++ head xs)
Il s'agit simplement d'une erreur d'analyse car votre clause where (ainsi que son contenu) doit être indentée d'au moins un espace par rapport à la clause définissant 'change'. En règle générale, vous devriez inclure dans votre question le message d'erreur que GHC vous donne. – macron
Désolé, c'était mon erreur. J'ai simplement oublié d'indenter le reste du code. Je l'ai arrangé pour correspondre à ce qu'il est vraiment. – user1670032
L'erreur d'analyse est due à la mise en forme de stackoverflow, pas à la source d'origine. –