[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