[Haskell-beginners] Hutton Ex 8.9.7

Tobias Brandt to_br at uni-bremen.de
Sat Sep 15 09:17:54 UTC 2018


  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 at gmail.com> ---------
     Datum: Sat, 15 Sep 2018 01:23:47 -0700
       Von: trent shipley <trent.shipley at gmail.com>
Antwort an: The Haskell-Beginners Mailing List - Discussion of  
primarily beginner-level topics related to Haskell  
<beginners at haskell.org>
   Betreff: [Haskell-beginners] Hutton Ex 8.9.7
        An: Haskell Beginners <beginners at 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 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 <trent.shipley at gmail.com> -----
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20180915/a5bd4716/attachment.html>


More information about the Beginners mailing list