# Difference between revisions of "Num instance for functions"

From HaskellWiki

(Category:FAQ, misspelling reflected the change precisely, but it was not the intended one) |
(→See also: applicative-numbers link) |
||

Line 26: | Line 26: | ||

== See also == |
== See also == |
||

+ | * The [[applicative-numbers]] package, which generates numeric class instances for arbitrary [[applicative functor]]s (including functions). |
||

* http://www.haskell.org/pipermail/haskell-cafe/2006-November/019374.html |
* 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/2006-October/019105.html |

## Revision as of 00:14, 28 April 2009

Some people have argued, that `Num`

instances of `(->)`

would be nice in order
to add functions nicely, say for

```
f, g :: Num a => b -> a
```

you would define

```
(f+g) x = f x + g x
```

With an according definition of `fromInteger`

```
fromInteger = const
```

numeric literals would also denote constant functions. This allows

```
f+2 == \x -> f x + 2
```

Even nicer, the mathematically established notation of omitting the multiplication dot

```
2(x+y) :: Integer
```

will now be parsed by a Haskell compiler to the most obvious meaning

```
2 :: Integer
```

! :-)

## Note

This article is in category Proposals in order to show people that this idea was already proposed, but that one should think twice implementing it. There should be a category Counterproposals.

## 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