Система воздействия
-
Основы системы эффектов
- Система эффектов описывает вычислительные эффекты программ, включая побочные эффекты.
- Используется для проверки эффектов во время компиляции, расширяет понятие типа.
- Тип эффекта описывает действие, область — с какими параметрами оно выполняется.
-
Примеры эффектов
- Чтение, запись или выделение памяти с уникальными метками областей.
- Функции с полиморфными переменными region, например, для обмена ячейками памяти.
- Работа с ресурсами, такими как файлы, с уникальными метками областей.
- Передача управления с продолжениями и прыжками с уникальными метками областей.
-
Реализации и поддержка
- Koka, Eff, Unison, Effekt — статически типизированные функциональные языки с обработчиками эффектов.
- Haskell с поддержкой эффектов через пакеты, но с акцентом на монады.
- OCaml 5.0 с экспериментальной поддержкой, планируется высокоуровневый синтаксис.
- Scala 3.1 с ограниченной поддержкой эффектов, Java с одним типом эффекта throws.
- JavaScript с предложением для алгебраических эффектов.
-
Рекомендации
- Учебники и обзорные документы для дальнейшего изучения систем эффектов.
Полный текст статьи: