-- Welford's variance
-- new_var = old_var * (x - old_mean) * (x - new_mean)
stats = scanl
(\ (count, sum, mean, var) x ->
let k = 1 / (count + 1)
mean' = mean + k * (x - mean)
ssr' = (count - 1) * var + k * count * (x - mean) * (x - mean)
in (count + 1, sum + x, mean', ssr' / (max 1 count))
)
(0, 0, 0, 0)
main = mapM_ print . stats . read =<< getLine