Num instance for functions
It is possible to write a
instance for functions in Haskell:
instance Num b => Num (a -> b) where negate = fmap negate (+) = liftA2 (+) (*) = liftA2 (*) fromInteger = pure . fromInteger abs = fmap abs signum = fmap signum
This allows writing expressions of the form
where functions can be added like
> (sin^2 + cos^2) 123.4 1.0
bers, leaving their arguments open for later.
The usefulness of this instance is debatable, and it is not currently part of the language report or defined in any popular library.
- The applicative-numbers package, which generates numeric class instances for arbitrary applicative functors (including functions).