Pull to refresh

Comments 12

О да, вывод типов в окамле — это то, что меня всегда радовало.
Работает алгоритм действительно потрясающе.

Даже нет особого желания разбираться с тем, как он работает.
А существуют случаи, когда алгоритм не может вывести тип и пользователю придется править код самостоятельно?
Только если такого типа нет. Во всех остальных случаях алгоритм выводит наиболее общий тип выражения. Другое дело, что иногда требуется определить для выражения более конкретный тип (если более общий не подходит семантически). Тогда его задают вручную.
Угу. Хорошая статья. Практически «на пальцах» объясняется. :) Мне на русском языке ничего лучше не попадалось.
Спасибо за хороший перевод хорошей статьи.

Когда я впервые заинтересовался этим алгоритмом, статья Даниэля Спивака мне очень помогла понять основы, и облегчила понимание более формального описания алгоритма.
Не раскрыта тема наследования. По крайней мере F# при коде насыщенном иерархиями наследования/коваринатностью ведет себя очень глухо (http://www.rsdn.ru/forum/decl/3789317.1.aspx)

В Nemerle ситуация лучше, вот о его алгоритме было бы интереснее почитать.
UFO just landed and posted this here
Мой друг без аккаунта на Хабре попросил запостить следующее (надеюсь, что это не является нарушением правил, поскольку песочницы для комментариев нет):

Алгоритм вывода для систем типов Хиндли-Милнера был придуман Дамасом и Милнером. Он подходит для некоторого ряда систем типов, которые обладают общими свойствами. Оригинальная система типов, с которой работали Хиндли и Милнер была простое типизированное лямбда-исчисление. Современные алгоритмы вывода типов в языках Haskell, Ocaml, Standard ML хоть и предназначены для работы с более мощными системами типов, в основе содержат тот же алгоритм.

Язык Scala же, напротив, имеет систему типов, для которой вывод типов по этому алгоритму невозможен. Поэтому она использует другой алгоритм, он придуман Пирсом (local type inference) и улучшен Одерским (colored local type inference). Поэтому иллюстрировать текст про алгоритм Хиндли-Милнера примерами на Скале нехорошо. Спиваку об этом, кстати, несколько раз написали в комментариях к исходному посту. Он ответил, что да, он это сейчас понимает, но на момент написания текста (2008-й год) он этого не знал и текст уже переделывать не станет.
Спасибо, это хороший комментарий. Добавил ссылку на него в топик.
Sign up to leave a comment.

Articles