[Haskell-beginners] Equality instance for lists
Brent Yorgey
byorgey at seas.upenn.edu
Sun Dec 1 03:21:27 UTC 2013
On Sat, Nov 30, 2013 at 10:40:59PM +0000, Patrick Browne wrote:
> Hi,
> I am trying to write my own simplified class and instances for equality.
> I have trouble with the equality equation for the empty list.
> Even though I can use the [] == [] at the GHCi prompt I cannot use it in
> my equality test.
> How can I make my eq test handle empty lists while staying within the
> context of my current code?.
> Thanks,
> Pat
>
> class Eq1 a where
> eq :: a -> a -> Bool
>
> instance Eq1 Int where
> eq a b = a == b
>
> instance Eq1 a => Eq1 [a] where
> -- This line compiles but gives an run time error.
> eq [] [] = True
This code does not give a run time error. The error you are getting
is a type inference error, which has nothing to do with this code.
> eq [] []
You simply need to give a type annotation on one of the empty lists.
eq ([] :: [Int]) []
The standard Eq class has some built-in magic support by GHCI
(extended default rules) which means this does not apply in the case
of using == directly.
-Brent
More information about the Beginners
mailing list