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

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


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

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

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

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

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

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

[X = integer, Y = X→X] 

или

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

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

Унификатором множества ограничений C[Si=Ti] называется типовая подстановка σ, такая что для каждого уравнения

S = T 

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

σ(S) = σ(T)