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

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

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

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

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

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

[X = integer, Y = X→X] 

или

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

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

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

S = T 

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

σ(S) = σ(T)