Travailler à partir de RWH, chapitre 3 question 5 demandes Je crée une fonction pour tester l'existence d'un paldindrome.Haskell question à propos de la fonction
j'ai écrit cela, mais il ne fonctionne pas
pCheck :: (Eq a) => [a] -> Bool;
pCheck a = take n a == (take n $ reverse a)
where n = floor (length a/2)
Je reçois cette erreur lorsque je tente de l'exécuter:
No instance for (RealFrac Int)
arising from a use of `floor' at len.hs:13:11-32
Possible fix: add an instance declaration for (RealFrac Int)
In the expression: floor (length a/2)
In the definition of `n': n = floor (length a/2)
In the definition of `pCheck':
pCheck a = take n a == (take n $ reverse a)
where
n = floor (length a/2)
Je suis confus ce que je fais mal? Je sais qu'un paldindrome pourrait aussi bien être testé avec a == reverse a
, mais maintenant je veux trouver l'erreur sur mon chemin.
MISE À JOUR: l'une des erreurs avec le code a été fixé par une suggestion par le juge, la question a été mis à jour pour refléter le problème restant
Un test plus simple serait: 'isPalindrome x = (montrer x) == (inverse $ show x)' re –
: jonno, je ne pense pas que le spectacle, ou parens sont nécessaires. 'isPalindrome = x == reverse x' –