If you are willing to depend on a recent version of base where Num is no longer a subclass of Eq and Show, it is also fine to do this:
instance Num a => Num (r -> a) where (f + g) x = f x + g x fromInteger = const . fromInteger
and so on.