# Num instance for functions

### From HaskellWiki

It is possible to write a instance for functions in Haskell:
where functions can be added like bers, leaving their arguments open for later.

Num

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

> (sin^2 + cos^2) 123.4 1.0

Num

The usefulness of this instance is debatable, and it is not currently part of the language report or defined in any popular library.

## See also

- The applicative-numbers package, which generates numeric class instances for arbitrary applicative functors (including functions).
- http://www.haskell.org/pipermail/haskell-cafe/2006-November/019374.html
- http://www.haskell.org/pipermail/haskell-cafe/2006-October/019105.html
- http://www.haskell.org/pipermail/haskell-cafe/2001-February/001531.html
- http://augustss.blogspot.com/2009/02/regression-they-say-that-as-you-get.html