Witam

Piszę prosty interpreter języka funkcyjnego i chciałbym zaimplementować inferencję typów w postaci algorytmu W (Hindleya-Milnera, wersja bottom-up). W tej chwili umiem napisać taką inferencję, ale przy założeniu, że nie ma funkcji rekurencyjnych. Moje próby nie odróżniają poprawnej rekurencji od miejsc, gdzie należy wyrzucić błąd OccureCheck.

Czy może ktoś z Was wie jak rozszerzyć inferencję typów o funkcje rekurencyjne? Nie chodzi mi o kod, ale o wyjaśnienie
jak zmieniają się reguły przy zastosowaniu rekurencji.
Dobrym punktem zaczepienia jest ten draft http://www.grabmueller.de/martin/www/pub/AlgorithmW.pdf

Wszystko co znalazłem do tej pory w necie to albo bardzo teoretyczne rozważania albo artukuły w których przyjmują dla uproszczenia brak rekurencji.

Pozdrawiam i z góry dziękuję za pomoc

Adam