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

2011-06-30 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  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 
> wrote:
> > What compiler errors are you getting?
> > -deech
> >
> > On Fri, Jul 1, 2011 at 12:55 AM, Ruohao Li  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


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

2011-06-30 Thread Lyndon Maydwell
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  wrote:
> (/) 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  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
>
>

___
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-06-30 Thread Jack Henahan
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  wrote:
> What compiler errors are you getting?
> -deech
> 
> On Fri, Jul 1, 2011 at 12:55 AM, Ruohao Li  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




398E692F.asc
Description: application/apple-msg-attachment




PGP.sig
Description: This is a digitally signed message part
___
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-06-30 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 wrote:

> (/) 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  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-06-30 Thread Nathan Howell
(/) 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  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-06-30 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  wrote:

> What compiler errors are you getting?
> -deech
>
> On Fri, Jul 1, 2011 at 12:55 AM, Ruohao Li  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-06-30 Thread aditya siram
What compiler errors are you getting?
-deech

On Fri, Jul 1, 2011 at 12:55 AM, Ruohao Li  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


[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