Hacker News Digest

20 ноября 2025 г. в 14:56 • okmij.org • ⭐ 76 • 💬 17

OriginalHN

#haskell#monads#effects#functional-programming#polysemy#effect-ts#koka#effekt

Freer Monads, More Extensible Effects (2015) [pdf]

Авторы представляют рациональную реконструкцию расширяемых эффектов как альтернативы трансформерам монад. Они показывают, как свободные монады и расширяемые эффекты возникают из постепенного абстрагирования шаблонного кода при вычислениях с эффектами. Этот процесс приводит к "более свободным монадам" (freer monads), которые строятся без ограничения Functor. Продолжение в таких монадах может быть представлено эффективной выровненной по типам структурой данных, что позволяет создать библиотеку расширяемых эффектов, которая не только понятнее, но и быстрее предыдущих реализаций.

Авторы демонстрируют три удивительно простых применения: недетерминизм с обязательным выбором (LogicT), перехват исключений IO в присутствии других эффектов и полуавтоматическое управление файловыми дескрипторами через монадические регионы. Используется новый вид "ленивости", основанный на левом Kan расширении. Подход позволяет легко добавлять, комбинировать и инкапсулировать эффекты, при этом обеспечивая лучшую производительность по сравнению с MTL и другими библиотеками обработчиков эффектов.