23:36 - Tue 2012.02.07

Reply to /wad/

len :: [a] -> Int
len [] = 0
len (_:xs) = 1 + len xs

sum' :: Num a => [a] -> a
sum' [] = 0
sum' (x:xs) = x + sum' xs

avrg :: (Real a, Fractional b) => [a] -> b
avrg l = realToFrac (sum' l) / fromIntegral (len l)

foo :: [Int]
foo = [1,2,3,4,5]

bar :: [Double]
bar = [1,2,3,4,5]

main :: IO ()
main = print (avrg foo, avrg bar)