[Haskell-beginners] Functor question

Matthew Wong matwong at rogers.com
Sun Nov 15 22:47:53 EST 2009


Hi,

When I define my data as fellow,

data Moo a = Moo a 
             deriving (Show)
             
instance Functor Moo where
    fmap f (Moo a) = Moo (f a) 

GHC gives me no problem.  Then I add something,

data (Num a) => Moo a = Moo a 
             deriving (Show)
             
instance Functor Moo where
    fmap f (Moo a) = Moo (f a) 

Now GHC gives me the follow error - see bellow.

What is the reason behind this?  What should I do to correct this?

thx,

//

matFun_v2.hs:16:12:
    Could not deduce (Num a) from the context ()
      arising from a use of `Moo' at matFun_v2.hs:16:12-14
    Possible fix:
      add (Num a) to the context of the type signature for `fmap'
    In the pattern: Moo a
    In the definition of `fmap': fmap f (Moo a) = Moo (f a)
    In the instance declaration for `Functor Moo'

matFun_v2.hs:16:21:
    Could not deduce (Num b) from the context ()
      arising from a use of `Moo' at matFun_v2.hs:16:21-29
    Possible fix:
      add (Num b) to the context of the type signature for `fmap'
    In the expression: Moo (f a)
    In the definition of `fmap': fmap f (Moo a) = Moo (f a)
    In the instance declaration for `Functor Moo'



More information about the Beginners mailing list