Hutton Ex 8.9.7

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Hutton Ex 8.9.7

trent shipley
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 answer

instance Eq a => Eq (Maybe a) where
  -- Defines the (==) operation.
  Nothing == Nothing = True
  Just    == 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
  _       == _       = False

instance 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 



_______________________________________________
Beginners mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Hutton Ex 8.9.7

Tobias Brandt-3

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 <[hidden email]> ---------
     Datum: Sat, 15 Sep 2018 01:23:47 -0700
       Von: trent shipley <[hidden email]>
Antwort an: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <[hidden email]>
   Betreff: [Haskell-beginners] Hutton Ex 8.9.7
        An: Haskell Beginners <[hidden email]>

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 answer
 
instance Eq a => Eq (Maybe a) where
  -- Defines the (==) operation.
  Nothing == Nothing = True
  Just    == 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
  _       == _       = False
 
instance 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 <[hidden email]> -----


_______________________________________________
Beginners mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners