Hey,
a few notes:
1. The (==) function in the second equation of the Maybe instance of (==) is not complete yet, since you need to match on instances of the Maybe type and "Just :: a -> Maybe a". Your idea "Just a == Just a" goes in the right direction, but please note that you can't bind two variable names ("a") in the same equation. You need to give each "boxed value" a different name. I'm sure you can work it out from there.
2. The right hand side of "(x:xs) == (y:ys)" is not implicitly recursive, but rather explicitly! Since we apply the function (==) to the smaller lists "xs" and "ys" until we arrive at a base case.
Greetings,
Tobias
----- Nachricht von trent shipley <trent.shipley@gmail.com> ---------
Datum: Sat, 15 Sep 2018 01:23:47 -0700
Von: trent shipley <trent.shipley@gmail.com>
Antwort an: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org>
Betreff: [Haskell-beginners] Hutton Ex 8.9.7
An: Haskell Beginners <beginners@haskell.org>
I couldn't get close on my own.From: https://github.com/pankajgodbole/hutton/blob/master/exercises.hs
{-7. Complete the following instance declarations:instance Eq a => Eq (Maybe a) where...instance Eq a => Eq [a] where...-}-- suggested answerinstance Eq a => Eq (Maybe a) where-- Defines the (==) operation.Nothing == Nothing = TrueJust == Just = True-- why isn't this Just a == Just a ?-- My guess is that a and Just a are different types and can't be == in Haskell_ == _ = Falseinstance Eq a => Eq [a] where-- Defines the (==) operation.[] == [] = True[x] == [y] = x == y(x:xs) == (y:ys) = x==y && xs==ys -- I assume this is implicitly recursive._ == _ = False
----- Ende der Nachricht von trent shipley <trent.shipley@gmail.com> -----