Правило ввода
В теории типов правило типизации — это правило вывода , которое описывает, как система типов присваивает тип синтаксической конструкции . [1] : 94 Эти правила могут применяться системой типов, чтобы определить, программа правильно ли типизирована и какие выражения типов имеют. Прототипическим вывода примером использования правил типизации является определение типа в просто типизированном лямбда-исчислении , которое является внутренним языком декартовых замкнутых категорий . [2]
Обозначения
[ редактировать ]Правила типизации определяют структуру типизации отношения , которое связывает синтаксические термины с их типами. [1] : 92 Синтаксически отношение типизации обычно обозначается двоеточием, например означает, что выражение имеет тип . Сами правила обычно задаются с использованием обозначения естественного вывода . [1] : 26 Например, следующие правила типизации определяют отношение типизации для простого языка логических значений : [1] : 93
Каждое правило гласит, что вывод под чертой может быть выведен из посылок над чертой. Первые два правила не имеют посылок над чертой, поэтому являются аксиомами . Третье правило имеет помещения над линией (точнее, три посылки), поэтому это правило вывода .
В языках программирования тип переменной зависит от того, где она привязана , что требует применения контекстно-зависимых правил типизации. Эти правила определяются типичным решением , обычно записываемым , который утверждает, что выражение имеет тип в контексте набора текста который связывает переменные с их типами. Контексты ввода иногда дополняются типами отдельных переменных; например, можно прочитать как «контекст дополнено информацией о том, что выражение имеет тип приводит к выводу, что выражение имеет тип ". Эту запись можно использовать для указания правил типизации для ссылок на переменные и лямбда-абстракции в просто типизированном лямбда-исчислении : [1] : 101–102
Аналогично, следующее правило типизации описывает конструкция стандартного ML :
Не все системы правил типизации напрямую определяют алгоритм проверки типов . Например, правило типизации для применения параметрически полиморфной функции в системе типов Хиндли-Милнера требует «угадывания» соответствующего типа, для которого должна быть создана функция. [3] Адаптация декларативной системы правил к разрешимому алгоритму требует создания отдельной алгоритмической системы, которая, как можно доказать, определяет то же самое отношение типизации. [4]
См. также
[ редактировать ]- Суждение (математическая логика)
- Типовая система
- Теория типов
- Переписка Карри-Ховарда
- Секвенционное исчисление
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Пирс, Бенджамин К. (2002). Типы и языки программирования (1-е изд.). Кембридж, Массачусетс: MIT Press. ISBN 0262162091 .
- ^ Баэз, Джон. «Кафе n-Категория» . golem.ph.utexas.edu . Проверено 30 сентября 2022 г.
- ^ Клеман, Доминик; Десперу, Тьерри; Кан, Жиль; Деспеиру, Жоэль (8 августа 1986 г.). «Простой аппликативный язык: Mini-ML» . Материалы конференции ACM 1986 года по LISP и функциональному программированию - LFP '86 (PDF) . Ассоциация вычислительной техники. стр. 13–27. дои : 10.1145/319838.319847 . ISBN 0897912004 . S2CID 5126579 .
- ^ Данфилд, Яна; Кришнасвами, Нил (23 мая 2021 г.). «Двунаправленная печать» . Обзоры вычислительной техники ACM . 54 (5): 98:19. arXiv : 1908.05839 . дои : 10.1145/3450952 . ISSN 0360-0300 . S2CID 201058734 .
Дальнейшее чтение
[ редактировать ]- Карделли, Лука (март 1996 г.). «Типовые системы» (PDF) . Обзоры вычислительной техники ACM . 28 (1): 263–264. дои : 10.1145/234313.234418 . S2CID 227408784 .