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