2010-09-04 10 views
16

Sto cercando informazioni sul noto Damas-Hindley-Milner algorithm per eseguire l'inferenza del tipo per i linguaggi funzionali, in particolare le informazioni sull'implementazione.Implementazione algoritmo di inferenza di tipo Damas-Hindley-Milner

So già come eseguire lo Algorithm W, ma ho sentito parlare di nuovi algoritmi recenti basati su generatore/risolutore di vincoli piuttosto che sull'unificazione usuale. Tuttavia, non riesco a trovare alcuna discussione sull'implementazione di questi nuovi algoritmi.

Qualche idea di dove potrei trovare alcune informazioni parziali sull'inferenza ML?

+0

Sono sei sicuro che la generazione/risoluzione dei vincoli non fosse per i sistemi di tipi con sottotitoli, ad es una delle famiglie HM (X) (Hindley-Milner parametrizzata da una relazione di sottotipizzazione)? –

+0

Ho letto che poteva essere usato per la famiglia HM (X) con sottotipizzazione, ma anche per cose come classi di tipi (polimorfismo parametrico), quindi sono un po 'perplesso – Vinz

+0

Le classi di tipi sono in qualche modo ortogonali al polimorfismo parametrico. Penso che Pascal Cuoq potrebbe essere corretto. Non sono sicuro di aver visto alcuna seria alternativa alla semplice generazione e unificazione dei vincoli per la ricostruzione del tipo in Standard ML, ad esempio. Approcci alternativi sarebbero certamente utili per i tipi di estensioni che sono state proposte però. – Gian

risposta

15

Se si ha familiarità con il codice ML, il modo migliore per trovare queste cose è semplicemente esaminare le implementazioni in natura. Un'implementazione di riferimento valida è HaMLet, progettata come più una piattaforma di test piuttosto che un'implementazione di produzione.

Quasi tutte le discussioni recenti serie su questi temi saranno in luoghi accademici. Un documento che potrebbe essere di interesse è Generalising Hindley-Milner type inference algorithms.

Inoltre, le implementazioni dei vari sistemi di tipo (tra cui lascia il polimorfismo) in di Pierce "Types and Programming Languages", così come di Appel "Modern Compiler Implementation in ML" più strettamente corrispondono approcci moderni per l'attuazione del presente che la descrizione di vaniglia di algoritmo W.

+0

grazie per il ref di HaMLet, non sapevo che un tale progetto esistesse! – Vinz

+0

@Vinz, sì, è abbastanza pulito. È legato ad alcuni lavori (apparentemente defunti) sul successore ML. – Gian

+0

L'altro giorno mi sono imbattuto in questo - si riferisce alle regole di gestione dei vincoli con inferenza di tipo con Classi di tipi: http://arxiv.org/abs/cs/0006034 – Gian