То, как я смотрю на связь между типизированным λ-исчислением и системой типов Хиндли-Милнера, заключается в том, что типизированное λ-исчисление есть λ -исчисление с добавленными типами. Вы можете выполнять типизированное λ-исчисление, не нуждаясь в системе типов Хиндли-Милнера, например. все типы объявлены, они не выводятся.
Теперь, если вам нужно написать строго статически типизированный язык программирования на основе типизированного λ-исчисление и хотел опустить аннотации типов, чтобы типы были вывод, затем вывод типа, и, скорее всего, вы будете использовать систему типов Хиндли-Милнера или ее вариант.
Другой способ подумать об этом — при создании языка программирования на основе типизированного λ-исчисления компилятор должен иметь фазы, одна из которых будет использовать систему типов Хиндли-Милнера. Порядок фаз будет следующим:
- Проверка синтаксиса — Lexer
- Семантическая проверка - Парсер
- Вывод типа — Система типов Хиндли-Милнера
- Проверка типов
- ...
Другой способ представить это так: система типов имеет набор правила типов и что Система типов Хиндли-Милнера — это особая система типов с определенным набором правил типов. Одно из основных преимуществ системы типов Хиндли-Милнера заключается в том, что она экономит время для вывода типов, а также имеет множество правил ввода искал в функциональном программировании, например. Let-полиморфизм и параметрический полиморфизм. В реальном мире, если вы создаете язык программирования и хотите, чтобы типы выводились, вы хотите, чтобы это было сделано в разумные сроки, например. секунды. Поскольку вывод может привести к комбинаторный взрыв часто требуется эффективный набор правил, и это одна из основных причин, почему Система типов Хиндли-Милнера так часто используется или упоминается.
Для реальных языков программирования, основанных на типизированном λ-исчислении, см. System F.
person
Guy Coder
schedule
18.10.2018