Я использую библиотеку Control.Foldl
для обхода произвольно длинного списка и подсчета всех вхождений произвольного количества уникальных сущностей. Т.е. список может иметь вид
[Just "a", Just "b", Just "aab", Nothing, Just "aab"]
и я мой результат должен быть формы
[(Just "a",1),(Just "b",1) (Just "aab", 2), (Nothing, 1)]
Теперь проблема в том, что у меня нет имени этих объектов априори, и я хотел бы динамически обновлять результаты по мере складывания.
Моя проблема в том, что я не знаю, как описать это вычисление в терминах типа данных Fold a b
из foldl
. В частности, на каждом этапе свертки мне нужно пройтись по списку результатов и спросить, видел ли я текущий элемент, но я не вижу способа описать это с помощью foldl
.