2010-09-04 1 views
16

Я ищу информацию о хорошо известном Damas-Hindley-Milner algorithm , чтобы сделать вывод типа для функциональных языков, особенно информацию о реализации.реализация алгоритма вывода типа Damas-Hindley-Milner

Я уже знаю, как сделать Algorithm W, но я слышал о последних новых алгоритмах, основанных на генераторе ограничений/решателе, а не в обычной унификации. Однако я не могу найти никаких обсуждений о реализации этого нового алгоритма.

Любая идея, где я мог бы найти некоторую частичную информацию о выводах ML?

+0

ли вы уверены, что создание/решение ограничений не было для систем типов с подтипированием, например одно из семейств HM (X) (Hindley-Milner, параметризованное отношением подтипирования)? –

+0

Я читал, что он может быть использован для семейства HM (X) с подтипированием, но также для таких вещей, как классы типов (параметрический полиморфизм), поэтому я немного озадачен – Vinz

+0

Типовые классы несколько ортогональны параметрическому полиморфизму. Я думаю, что Паскаль Куок может быть прав. Я не уверен, что видел серьезные альтернативы простой генерации и унификации ограничений для реконструкции типов в стандартном ML. Альтернативные подходы, несомненно, станут полезными для тех видов расширений, которые были предложены. – Gian

ответ

15

Если вам удобно с кодом ML, лучший способ найти эти вещи - просто взглянуть на реализации в дикой природе. Хорошая эталонная реализация - это HaMLet, которая больше похожа на тестовую платформу, чем на реализацию производства.

Почти все серьезные недавние обсуждения этих вопросов будут проходить в научных центрах. Одна из статей, которая может представлять интерес, - Generalising Hindley-Milner type inference algorithms.

Кроме того, реализация различных систем типа (в том числе и пусть полиморфизм) в Пирсе «Types and Programming Languages», а также Appel в «Modern Compiler Implementation in ML» более точно соответствовать современным подходам к реализации этого, чем описание ванильным алгоритма W.

+0

спасибо за ref HaMLet, я не знал, что такой проект существует! – Vinz

+0

@Vinz, да, это довольно аккуратно. Это связано с некоторыми (казалось бы, несуществующими) работами над преемником ML. – Gian

+0

Я наткнулся на это на днях - он связывает правила обработки ограничений с типом вывода с помощью классов типа: http://arxiv.org/abs/cs/0006034 – Gian

Смежные вопросы