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