Difference between revisions of "Num instance for functions"
Jump to navigation
Jump to search
.
(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, 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
- http://augustss.blogspot.com/2009/02/regression-they-say-that-as-you-get.html