
5 Apr
2011
5 Apr
'11
5:57 a.m.
How can i know when casting of types maked by compiler and when programmer must to do it? 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)