Re: [Haskell-cafe] How to implement the mean function

2011-07-01 Thread Ruohao Li
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 `mean': mean xs = sum xs / length xs

test.hs:8:10:
Couldn't match expected type `b' against inferred type `Int'
  `b' is a rigid type variable bound by
  the type signature for `mean' at test.hs:7:27
In the expression: sum xs / length xs
In the definition of `mean': mean xs = sum xs / length xs

test.hs:8:19:
Couldn't match expected type `a' against inferred type `Int'
  `a' is a rigid type variable bound by
  the type signature for `mean' at test.hs:7:13
In the second argument of `(/)', namely `length xs'
In the expression: sum xs / length xs
In the definition of `mean': mean xs = sum xs / length xs
On Fri, Jul 1, 2011 at 2:00 PM, aditya siram aditya.si...@gmail.com wrote:

 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) = [a] - b
  But when I implement this simple function, the compiler keep whining at
 me
  on type errors. I know this is wrong:
  mean xs = sum xs / length xs
  But how to get it right? Thanks.
  ___
  Haskell-Cafe mailing list
  Haskell-Cafe@haskell.org
  http://www.haskell.org/mailman/listinfo/haskell-cafe
 
 

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] How to implement the mean function

2011-07-01 Thread Ruohao Li
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 for `mean'
In the expression: sum xs / fromIntegral (length xs)
In the definition of `mean':
mean xs = sum xs / fromIntegral (length xs)

test.hs:8:10:
Couldn't match expected type `b' against inferred type `a'
  `b' is a rigid type variable bound by
  the type signature for `mean' at test.hs:7:27
  `a' is a rigid type variable bound by
  the type signature for `mean' at test.hs:7:13
In the expression: sum xs / fromIntegral (length xs)
In the definition of `mean':
mean xs = sum xs / fromIntegral (length xs)

And the div way will do integer division, which is not what I want.

On Fri, Jul 1, 2011 at 2:07 PM, Nathan Howell nathan.d.how...@gmail.comwrote:

 (/) 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 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) = [a] - b
 But when I implement this simple function, the compiler keep whining at me
 on type errors. I know this is wrong:
 mean xs = sum xs / length xs
 But how to get it right? Thanks.

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe



___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] How to implement the mean function

2011-07-01 Thread Ruohao Li
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]:
 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:
 
  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 `mean': mean xs = sum xs / length xs
 
  test.hs:8:10:
  Couldn't match expected type `b' against inferred type `Int'
`b' is a rigid type variable bound by
the type signature for `mean' at test.hs:7:27
  In the expression: sum xs / length xs
  In the definition of `mean': mean xs = sum xs / length xs
 
  test.hs:8:19:
  Couldn't match expected type `a' against inferred type `Int'
`a' is a rigid type variable bound by
the type signature for `mean' at test.hs:7:13
  In the second argument of `(/)', namely `length xs'
  In the expression: sum xs / length xs
  In the definition of `mean': mean xs = sum xs / length xs
  On Fri, Jul 1, 2011 at 2:00 PM, aditya siram aditya.si...@gmail.com
 wrote:
  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) = [a] - b
   But when I implement this simple function, the compiler keep whining at
 me
   on type errors. I know this is wrong:
   mean xs = sum xs / length xs
   But how to get it right? Thanks.
   ___
   Haskell-Cafe mailing list
   Haskell-Cafe@haskell.org
   http://www.haskell.org/mailman/listinfo/haskell-cafe
  
  
 
  ___
  Haskell-Cafe mailing list
  Haskell-Cafe@haskell.org
  http://www.haskell.org/mailman/listinfo/haskell-cafe



 
 Computer Science is no more about computers than astronomy is about
 telescopes.
 -- Edsger Dijkstra
 






___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] How to implement the mean function

2011-06-30 Thread Ruohao Li
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 wrong:
mean xs = sum xs / length xs
But how to get it right? Thanks.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe