Простое типизированное лямбда-исчисление против системы типов Хиндли-Милнера - PullRequest
0 голосов
/ 01 октября 2018

Я недавно изучал λ-исчисление.Я понял разницу между нетипизированным и типизированным λ-исчислением.Но мне не очень ясно о различии между системой типов Хиндли-Милнера и типизированным λ-исчислением .Речь идет о параметрическом полиморфизме или есть какие-либо другие различия?

Может ли кто-нибудь четко указать на различия (и сходства) между ними?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Я смотрю на взаимосвязь между типизированным λ-исчислением и системой типов Хиндли-Милнера состоит в том, что типизированное λ-исчисление равно λ-калькул с добавлением типов.Вы можете сделать набранное λ-исчисление без необходимости система типов Хиндли-Милнера , например, все типы объявлены, они не выводятся.

Теперь, если вы былинаписать строго статически типизированный язык программирования на основе типизированного λ-исчисления и хотел опустить аннотации типов , позволяющие типам быть выведенными затем используется вывод типа , и, скорее всего, вы будете использовать систему типов Хиндли-Милнера или ее вариант.

Еще один способ подумать об этом - при созданииЯзык программирования, основанный на набранном λ-исчислении , состоит в том, что компилятор будет иметь фазы , один из которых будет использовать систему типов Хиндли-Милнера .Порядок фаз будет следующим:

  1. Проверка синтаксиса - Lexer
  2. Семантическая проверка - Parser
  3. Вывод типа - Система типов Хиндли-Милнера
  4. Проверка типа
  5. ...

Еще один способ думать об этом состоит в том, что система имеет набор правил типа и что система типов Хиндли-Милнера является системой конкретного типа сопределенный набор правил типа.Одним из основных преимуществ системы типов Хиндли-Милнера является то, что она экономит время для выведения типов, а также имеет множество правил набора искомых в функциональном программировании Например, Let-полиморфизм и параметрический полиморфизм .В реальном мире, если вы создаете язык программирования и хотите, чтобы типы выводились, вы хотите, чтобы это было сделано за разумное количество времени, например, за секунды.Так как вывод может привести к комбинаторному взрыву , часто ищут эффективный набор правил, и это является одной из главных причин, почему система типа Хиндли-Милнера так частоиспользуется или на него ссылаются.

Для реальных языков программирования, основанных на набранном λ-исчислении см. Система F .

0 голосов
/ 09 октября 2018

Различие состоит в том, что существует множество систем типа для лямбда-исчисления , и Хиндли-Милнер является одной из них.Хиндли-Милнер - система типов с параметрическим полиморфизмом.Это то, что мы называем дженериками в современных языках программирования.

...