2010-09-04 7 views
16

Ich bin auf der Suche nach Informationen über die bekannte Damas-Hindley-Milner algorithm zu Typ Rückschluss für funktionale Sprachen zu tun, vor allem Informationen über die Implementierung.Damas-Hindley-Milner Typ Inferenzalgorithmus Implementierung

Ich weiß bereits, wie man die Algorithm W macht, aber ich hörte von neuen, neuen Algorithmen, die auf Constraint-Generator/Solver statt gewöhnlicher Vereinheitlichung basieren. Ich kann jedoch keine Diskussionen über die Implementierung dieses neuen Algorithmus finden.

Irgendeine Idee, wo ich einige partielle Informationen über ML Inferenz finden könnte?

+0

Sind Sie sind sicher, dass die Generierung/Lösung von Constraints nicht für Typsysteme mit Subtyping, z eine der HM (X) -Familie (Hindley-Milner durch eine Subtyping-Beziehung parametrisiert)? –

+0

Ich las es könnte für die HM (X) -Familie mit Subtyping verwendet werden, sondern auch für Dinge wie Klassen (parametrische Polymorphismus), so bin ich ein wenig verwirrt – Vinz

+0

Typklassen sind etwas orthogonal zu parametrischen Polymorphismus. Ich denke, Pascal Cuoq könnte Recht haben. Ich bin mir nicht sicher, ob ich ernsthafte Alternativen zur einfachen Erzeugung und Vereinheitlichung von Constraints für die Typrekonstruktion in Standard ML gesehen habe. Alternative Ansätze wären sicherlich nützlich für die Arten von Erweiterungen, die jedoch vorgeschlagen wurden. – Gian

Antwort

15

Wenn Sie mit ML-Code vertraut sind, ist der beste Weg, diese Dinge zu finden, einfach in die Implementierungen zu schauen. Eine gute Referenzimplementierung ist HaMLet, die eher als Testplattform denn als Produktionsimplementierung konzipiert ist.

Fast alle ernsten jüngsten Diskussion dieser Fragen wird in wissenschaftlichen Veranstaltungsorten sein. Ein interessantes Papier ist Generalising Hindley-Milner type inference algorithms.

Auch die Implementierungen von verschiedenen Systemen des Typs (einschließlich Polymorphismus lassen) in Pierces „Types and Programming Languages“ sowie Appels „Modern Compiler Implementation in ML“ enger modernen Ansätzen passen diese als die Vanille Beschreibung des Algorithmus zur Umsetzung W.

+0

danke für die ref zu HaMLet, ich wusste nicht, wie ein solches projekt existiert! – Vinz

+0

@Vinz, ja, es ist ziemlich ordentlich. Es ist mit einigen der (anscheinend nicht mehr existierenden) Arbeiten an Nachfolger ML verbunden. – Gian

+0

Ich bin neulich darüber gestoßen - es bezieht Constraint Handling Regeln mit Typ Rückschluss mit Typ Klassen: http://arxiv.org/abs/cs/0006034 – Gian