Доброго времени суток.
Задача простая, есть массив чисел. Необходимо посчитать сколько значений в попало в заданные интервалы. Два решения (оба скучные и слишком ручные):
let r1 = 580
let r2 = 1000
let r3 = 1500
let r4 = 5500
-- (1)
print $ length $ filter (\x -> x < r1) result
print $ length $ filter (\x -> r1 < x && x < r2) result
print $ length $ filter (\x -> r2 < x && x < r3) result
print $ length $ filter (\x -> r3 < x && x < r4) result
print $ length $ filter (\x -> r4 < x) result
-- (2)
print $ show $ foldl (\(a,b,c,d,e) x
-> case x of
x | x < r1 -> (a+1,b,c,d,e)
x | x < r2 -> (a,b+1,c,d,e)
x | x < r3 -> (a,b,c+1,d,e)
x | x < r4 -> (a,b,c,d+1,e)
otherwise -> (a,b,c,d,e+1)
) (0, 0, 0, 0, 0) result
В генерируемый код не смотрел.