В одном из сообщений я слышал, что интерфейс Applicative
некоторых парсеров реализован по-разному, более эффективно, чем их интерфейс Monad
. Причина в том, что при Applicative
мы знаем все "эффекты" заранее, прежде чем начнется все эффективное вычисление. С помощью монадов эффекты могут зависеть от значений во время вычисления, поэтому эта оптимизация невозможна.
Я бы хотел увидеть несколько хороших примеров этого. Это может быть очень простой парсер или какая-то другая монада, что не важно. Важно то, что интерфейс Applicative
такой монады соответствует ее return
и ap
, но с помощью Applicative
создается более эффективный код.
Обновление: Просто чтобы уточнить, здесь меня не интересуют аппликации, которые не могут быть монадами. Вопрос в том, что они оба.