Вывод типов при вызове обобщенных методов с лямбдами и перегрузкой функций: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 17: Строка 17:
Требуется найти для этого множества ограничений наиболее общий '''унификатор'''.  
Требуется найти для этого множества ограничений наиболее общий '''унификатор'''.  


'''Унификатором''' множества ограничений C[S<sub>i</sub>=T<sub>i</sub>] называется типовая подстановка σ, такая что для каждого уравнения  
'''Унификатором''' множества ограничений  
C[S<sub>i</sub>=T<sub>i</sub>]  
называется типовая подстановка σ, такая что для каждого уравнения  


  S = T  
  S = T  

Версия от 19:04, 25 июня 2014

Алгоритм Хиндли-Милнера

Алгоритм Хиндли-Милнера предназначен для вывода типов при наличии ограничений

Для компиляции он важен когда мы выводим типы параметров в вызове обобщенной функции, при этом в качестве параметров фигурируют ляибда-выражения.

Алгоритм Хиндли-Милнера описан в Пирсе, с.343 Его суть состоит в следующем. Имеется множество ограничений на типы C, записываемое в виде равенств вида:

[X = integer, Y = X→X] 

или

[X→Y = Y→Z, Z = U→W] 

Требуется найти для этого множества ограничений наиболее общий унификатор.

Унификатором множества ограничений

C[Si=Ti] 

называется типовая подстановка σ, такая что для каждого уравнения

S = T 

в множестве C выполняется

σ(S) = σ(T)