[Haskell-beginners] Meaning of (Eq a)
Rohit Garg
rpg.314 at gmail.com
Sun Sep 5 04:58:09 EDT 2010
Hi,
RWH: chapter 3 - in question 5, you have to write a function which
determines if a list is a palindrome. Here is my solution
isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome [] = False
isPalindrome x = compareLists x (reverse x)
where compareLists [x] [y] = x == y
compareLists (x:xs) (y:ys) = if x == y
then compareLists xs ys
else False
Although it works, my question is why ghci refuses to run it without
the "(Eq a) => " being added to the type signature of the function.
Presumably, it is to let ghc know that you can perform equlity tests
on a. If so, then why does the sumList function below work without any
type signature of any kind? I haven't told ghc that the input list
elements can be added together.
sumList [] = 0
sumList (x:xs) = x + sumList xs
Thanks,
--
Rohit Garg
http://rpg-314.blogspot.com/
More information about the Beginners
mailing list