What compiler errors are you getting?
-deech
On Fri, Jul 1, 2011 at 12:55 AM, Ruohao Li liruo...@gmail.com wrote:
Hi guys,
I just started learning some Haskell. I want to implement a mean function to
compute the mean of a list. The signature of the function is:
mean :: (Num a, Fractional b) =
For mean xs = sum xs / length xs, I got the following:
test.hs:8:10:
No instance for (Fractional Int)
arising from a use of `/' at test.hs:8:10-27
Possible fix: add an instance declaration for (Fractional Int)
In the expression: sum xs / length xs
In the definition of
(/) operates on a Fractional instance... but length returns an Int, which is
not a Fractional.
You can convert the Int to a Fractional instance:
mean xs = sum xs / fromIntegral (length xs)
or try an integer division:
mean xs = sum xs `div` length xs
-n
On Thu, Jun 30, 2011 at 10:55 PM, Ruohao
For mean xs = sum xs / fromIntegral (length xs), I got the following:
test.hs:8:10:
Could not deduce (Fractional a)
from the context (Num a, Fractional b)
arising from a use of `/' at test.hs:8:10-42
Possible fix:
add (Fractional a) to the context of the type signature
Additionally, this SO question[0] is nearly identical, and provides a little
more elaboration.
[0]:http://stackoverflow.com/questions/2376981/haskell-types-frustrating-a-simple-average-function
On Jul 1, 2011, at 2:07 AM, Ruohao Li wrote:
For mean xs = sum xs / length xs, I got the following:
The problem is that you need to convert (length xs) to a Num, then
return a Fractional.
On Fri, Jul 1, 2011 at 2:07 PM, Nathan Howell nathan.d.how...@gmail.com wrote:
(/) operates on a Fractional instance... butĀ length returns an Int, which is
not a Fractional.
You can convert the Int to a
Thanks for the SO link, change the Num a constraint to Real a and using
realToFrac then it just works.
On Fri, Jul 1, 2011 at 2:11 PM, Jack Henahan jhena...@uvm.edu wrote:
Additionally, this SO question[0] is nearly identical, and provides a
little more elaboration.
[0]:
Hi guys,
I just started learning some Haskell. I want to implement a mean function to
compute the mean of a list. The signature of the function is:
mean :: (Num a, Fractional b) = [a] - b
But when I implement this simple function, the compiler keep whining at me
on type errors. I know this is