Если я правильно понимаю, что вы хотите, вы можете определить функцию, которая присваивает то, что вы называете «значением», одному целому числу, а затем сопоставить список сбора с ним:
bin :: Int -> String
bin x
| x <= 0 = error "nonpositive value"
| x < 60 = "Low"
| x < 80 = "Medium"
| x < 100 = "High"
| otherwise = error "value greater than or equal to 100"
binnedCollection :: Int -> Int -> Int -> Int -> [String]
binnedCollection w x y z = map bin $ collection w x y z
Например,
Prelude> binnedCollection 0 20 60 80
["Low","Low","Medium","High"]
Я добавил ошибки для диапазонов, не включенных в ваше определение; измените их на те, которые соответствуют вашей логике.