relevant reddit comment thread: https://www.reddit.com/r/haskell/comments/9vtis5/the_universe_of_discourse_i_hate_the_environment/e9f1lea?utm_source=reddit-android

instance Num b => Num (a -> b) where
  f + g = \x -> f x + g x
  f * g = \x -> f x * g x
  f - g = \x -> f x - g x
  negate f = \x -> negate (f x)
  abs f = \x -> abs (f x)
  signum f = \x -> signum (f x)
  fromInteger i = \x -> fromInteger (f x)