On Tue, Apr 5, 2011 at 12:14 PM, Daniel Fischer
<daniel.is.fischer@googlemail.com> wrote:
On Tuesday 05 April 2011 10:38:37, Nadav Chernin wrote:
> Why only "length as" we must to cast? Why "sum as", that have type
> Integer can be used in (/).
>
> :t (/)
>
> (/) :: (Fractional a) => a -> a -> a
No, sum as has the type of as's elements,
sum :: Num a => [a] -> a
So the use of (/) refines the constraint from (Num a) to (Fractional a).
if you want it to work on Integers too,
you'd get
mean :: (Real a, Fractional b) => [a] -> b
mean xs = realToFrac (sum xs) / (fromIntegral $ length xs)