<div dir="ltr">I couldn't get close on my own.<div><br></div><div>From: <a href="https://github.com/pankajgodbole/hutton/blob/master/exercises.hs">https://github.com/pankajgodbole/hutton/blob/master/exercises.hs</a><br><div><br></div><div><div><font face="monospace">{-</font></div><div><font face="monospace">7. Complete the following instance declarations:</font></div><div><font face="monospace">     instance Eq a => Eq (Maybe a) where</font></div><div><font face="monospace">     ...</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">     instance Eq a => Eq [a] where</font></div><div><font face="monospace">     ...</font></div><div><font face="monospace">-}</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">-- suggested answer</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">instance Eq a => Eq (Maybe a) where</font></div><div><font face="monospace">  -- Defines the (==) operation.</font></div><div><font face="monospace">  Nothing == Nothing = True</font></div><div><font face="monospace">  Just    == Just    = True </font></div><div><font face="monospace">    -- why isn't this Just a == Just a ?</font></div><div><font face="monospace">    -- My guess is that a and Just a are different types and can't be == in            Haskell</font></div><div><font face="monospace">  _       == _       = False</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">instance Eq a => Eq [a] where</font></div><div><font face="monospace">  -- Defines the (==) operation.</font></div><div><font face="monospace">  [] == []         = True</font></div><div><font face="monospace">  [x] == [y]       = x == y</font></div><div><font face="monospace">  (x:xs) == (y:ys) = x==y && xs==ys -- I assume this is implicitly recursive.</font></div><div><font face="monospace">  _  == _          = False </font></div><div><br></div></div><div><br></div></div></div>