крутяк я уточню, я сейчас читаю код dfa анализатора java кода, которй используется в идее, но хочется почитать более высокоуровневый разбор того, как это надо делать :)
Это основополагающая работа, которая породила целое направление по использованию (в самых разных вариантах) Graph Reachability для Dataflow Analysis. Соответственно, существует огромное количество работ, развивающих эту тему и применяющих к разным случаям.
Комбинатры — это способ реализации алгоритмов. Произвольных, и производительность тоже зависит от подходов. Поэтому странно читать о том, что комбинаторы чего-то "не могут" :)