[Haskell-cafe] Newcomers question

b1g3ar5 nick.straw at gmail.com
Sat Oct 31 19:31:14 EDT 2009

I'm trying:

instance Num b => Num (a -> b) where
fromInteger = pure . Prelude.fromInteger
negate = fmap Prelude.negate
(+) = liftA2 (Prelude.+)
(*) = liftA2 (Prelude.*)
abs = fmap Prelude.abs
signum = fmap Prelude.signum

but the compiler rejects it with:

    Could not deduce (Show (a -> b), Eq (a -> b))
      from the context (Num b)
      arising from the superclasses of an instance declaration
                   at src\Main.hs:24:9-29
    Possible fix:
      add (Show (a -> b), Eq (a -> b)) to the context of
        the instance declaration
      or add an instance declaration for (Show (a -> b), Eq (a -> b))
    In the instance declaration for `Num (a -> b)'

Could someone please explain this to me?

I thought that it might be that it couldn't work out the functions
necessary for (a->b) to be in the classes Show and Eq - so I tried
adding definitions for == ans show, but it made no difference.


More information about the Haskell-Cafe mailing list