[Haskell-cafe] Newcomers question
nick.straw at gmail.com
Sat Oct 31 19:31:14 EDT 2009
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
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