
Почему звукость типа имеет значение на языках функционального программирования
8 июля 2025 г.Таблица ссылок
Введение
Перевод на последовательное исчисление
2.1 Арифметические выражения
2.2 Пусть привязки
2.3 Определения верхнего уровня
2.4 Алгебраические данные и типы кодов
2.5 первоклассные функции
2.6 Операторы управления
Оценка в контексте
3.1 Контексты оценки для развлечения
3.2 Сосредоточение внимания на оценке в сердечнике
Правила печати
4.1 Правила печати для развлечения
4.2 Правила печати для Core
4.3 Тип. Звукость
Понимание
5.1 Контексты оценки являются первым классом
5.2 Данные двойные до кодата
5.3 LET-связы
5.4 Трансформация случая
5.5 Прямой и косвенный потребители
5.6 Позвоните в запас, вызовов и eta-laws
5.7 Линейная логика и двойственность исключений
Связанная работа
Заключение, заявление о доступности данных и подтверждение
A. Взаимосвязь с последовательным исчислением
B. Правила набора развлечений
C. Оперативная семантика лейбла/goto
Ссылки
4 Правила печати
В этом разделе мы представляем правила набора для развлечения в разделе 4.1 и для ядра в разделе 4.2. В разделе 4.3 мы утверждаем тип обоснованности для обоих языков и доказываем, что перевод от веселья на основной сохраняет типичность программ. Мы используем одни и те же конструкторы, деструкторы, типы и контексты для печати как для веселья, так и для ядра, которые приведены в определении 4.1. Обратите внимание, что мы различаем переменные производителя и потребителей в контекстах типирования, которые мы указываем с аннотациями PRD и CNS.
Мы специализируем правила для типов данных для пары и списка типов конкретных типов, а также правила для типов кодат для LPAIR, потока и функций 𝜎 → 𝜏. Реалистичный язык программирования будет использовать объявления типа, представленные программистом для данных TypeCheck и типов кода, вместо использования этих особых случаев. Но формализация такого общего механизма для определения данных и типов кодат делает правила печати менее читаемыми. Этот вид механизма для определения алгебраических данных и типов кодат на языках, основанных на последовательности, можно найти в [Downen et al. 2015] или [Даунен и Ариола 2020, раздел 8]. Во всех приведенных ниже правилах печати мы предполагаем, что у нас есть программная среда, которая содержит типовые объявления для всех определений, содержащихся в программе, но не явно не передают эту программу среды через каждое из правил печати.
4.1 Правила печати для развлечения
Мы не обсуждаем правила печати для развлечения в деталях, так как они в основном стандартные. Вместо этого мы предоставляем полные правила в Приложении B. Языковая веселье имеет только одну синтаксическую категорию, термины, поэтому нам нужно только одно типирование суждения γ ⊢ 𝑡: 𝜏. В этом печатном решении говорится, что в контексте γ (который содержит назначения типа как для переменных, так и для ковариации) термин 𝑡 имеет тип 𝜏. Единственные два интересных правила касаются маркировки и Goto: Goto:
В правиле, мы требуем, чтобы ковейство 𝛼 находилось в контексте с типом 𝜏, и что термин 𝑡 может быть типичным с тем же типом. Сам термин Goto (𝑡; 𝛼) может использоваться в любом типе 𝜏 ′, потому что он не возвращается к своему непосредственно окружающему контексту.
Авторы:
(1) Дэвид Биндер, Университет Тюбингена, Германия;
(2) Марко Цшенке, Университет Тюбингена, Германия;
(3) Мариус Мюллер, Университет Тюбингена, Германия;
(4) Клаус Остерманн, Университет Тюбингена, Германия.
Эта статья есть
Оригинал