-- odchylka::[Double]->Double

-- mnoho pruchodu

odchylka1::[Double]->Double
odchylka1 szn = sum (odchylky szn avg) / n
  where
    n = fromIntegral (length szn)
    avg = sum szn / n

odchylky szn avg = map (\x -> abs (x - avg)) szn

-- jeden pruchod

odchylka2'::[Double]->Double->(Double, Double, Int)
odchylka2' szn avg = foldl accOdchylka2' (0.0,0.0,0) szn
  where
    accOdchylka2' (sOd, sElt, n) x = (sOd + abs (x-avg), sElt + x, n+1)

odchylka2::[Double]->Double
odchylka2 szn = odch / n'
  where
    avg = soucet / n'
    n' = fromIntegral n
    (odch, soucet, n) = odchylka2' szn avg
