Так монады именно как некий интерфейс для композиции значений отлично себя показывают в final tagless стиле.
То есть да, можно пользоваться более слабыми аппликативными функторами или теми же стрелками, но юзабилити на практике у них так себе
Так в статье как раз написано, что есть масса полезных задач, где связка метаязык+DSL успешно выполняет свою работу, безо всяких монад.
С монадами вообще много заблуждений, как показывает дискуссия выше.
Например, люди уже не понимают, похоже, как на языке функций реализовать простую виртуальную машину и ассемблер для нее без привлечения монад.
Для этой задачи вполне хватает продолжений и CPS. И концептуально именно так и пишут симуляторы, хоть на Си, хоть на Прологе.
Вон, даже Аппель в своем компиляторном учебнике успешно обошелся CPS в разделе Continuation-based I/O.