Haskell « Среднее арифметическое списка чисел

Задача определить функцию, принимающую на входе список вещественных чисел и вычисляющую их арифметическое среднее. (Постараться чтобы функция осуществляла только один проход по списку.)

1 ответов


Так:


module Avg where

avg xs = avg' 0 0 xs

avg' count sum [] = sum / count
avg' count sum (x:xs) = avg' (count + 1) (sum + x) xs
 

Или так:

avg2 xs = snd acc / fst acc
    where acc = foldl (\ (count, summ) x -> (count + 1, summ + x) ) (0, 0) xs