# Num instance for functions

### From HaskellWiki

(Difference between revisions)

(merely a copy of my mail to Haskell-Cafe) |
(BASIC blog post) |
||

(8 intermediate revisions by 2 users not shown) | |||

Line 2: | Line 2: | ||

to add functions nicely, say for | to add functions nicely, say for | ||

<haskell>f, g :: Num a => b -> a</haskell> | <haskell>f, g :: Num a => b -> a</haskell> | ||

− | + | you would define | |

<haskell>(f+g) x = f x + g x</haskell> | <haskell>(f+g) x = f x + g x</haskell> | ||

With an according definition of <hask>fromInteger</hask> | With an according definition of <hask>fromInteger</hask> | ||

<haskell>fromInteger = const</haskell> | <haskell>fromInteger = const</haskell> | ||

− | + | numeric literals would also denote constant functions. This allows | |

<haskell>f+2 == \x -> f x + 2</haskell>. | <haskell>f+2 == \x -> f x + 2</haskell>. | ||

Line 13: | Line 13: | ||

multiplication dot | multiplication dot | ||

<haskell>2(x+y) :: Integer</haskell> | <haskell>2(x+y) :: Integer</haskell> | ||

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

<haskell>2 :: Integer</haskell> | <haskell>2 :: Integer</haskell> | ||

− | + | ! :-) | |

+ | |||

+ | == 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 == | == 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 | ||

* http://www.haskell.org/pipermail/haskell-cafe/2001-February/001531.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 | ||

− | + | [[Category:Humor]] | |

[[Category:Proposals]] | [[Category:Proposals]] | ||

+ | [[Category:FAQ]] | ||

+ | [[Category:Style]] |

## Revision as of 11:53, 4 May 2011

Some people have argued, thatNum

(->)

to add functions nicely, say for

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

you would define

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

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

! :-)

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

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