Personal tools

Num instance for functions

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(merely a copy of my mail to Haskell-Cafe)
Current revision (11:53, 4 May 2011) (edit) (undo)
(BASIC blog post)
 
(8 intermediate revisions 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
+
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
+
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
+
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]]

Current revision

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

! :-)

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