Системы эффектов как механизм управления контекстными свободными переменными: единый взгляд
Аннотация
Системы эффектов поднимают сведения о вычислительных эффектах программы на уровень типов: они уточняют границы абстракций и позволяют компилятору проверять, что эффектное вычисление выполняется в поддерживающем его контексте. Тем не менее статическое отслеживание эффектов пока не стало повсеместной практикой: ведущие подходы – строки эффектов, возможности (capabilities) и модальные типы – обычно описываются с помощью различного технического аппарата, и проектировщику языка трудно увидеть общую картину пространства решений. Мы предлагаем объединяющий взгляд: система эффектов – это механизм управления контекстными свободными переменными вычисления – зависимостями, которые не передаются обычными аргументами, а должны разрешаться контекстом исполнения. Каждая такая переменная проходит жизненный цикл из двух фаз: она возникает ожидающей – с неразрешённым требованием к контексту; после разрешения зависимость может сохраниться внутри значения – либо буквально, посредством захвата свидетельства, либо в широком смысле, как зависимость от контекста построения. Семейства систем эффектов различаются тем, какие фазы и переходы этого цикла они поддерживают и как отражают их в типах. Классические строковые системы держат переменные ожидающими и не выражают захват. Системы на основе возможностей допускают захват, но удерживают захваченную переменную в предоставившем её контексте средствами escape-анализа. Модальные системы вместо запрета повторно освобождают утёкшую переменную, снова выставляя её в типе как требование к контексту. Сравнение семейств вдоль единой оси жизненного цикла показывает, что выбор поддерживаемых переходов предопределяет остальные черты дисциплины – от необходимого вида полиморфизма до мест сосредоточения аннотаций – и тем самым даёт проектировщику языка карту пространства решений.
Ключевые слова
Издание
Труды Института системного программирования РАН, том 38, вып. 4, часть 1, 2026, стр. 69-88.
ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).
DOI: 10.15514/ISPRAS-2026-38(4)-4
Для цитирования
Полный текст статьи в формате pdf
Вернуться к содержанию тома