2012-03-07 10 views
41

Nella diapositiva 30/78 della presentazione this, Simon suggerisce che l'implementazione delle classi di tipi era una "disperazione" all'inizio. Qualcuno sa perché è stato?Perché le classi di tipo erano difficili da implementare?

+1

Non è un esperto della tradizione di Haskell, ma probabilmente perché non era mai stato fatto prima e nessuno sapeva ancora come farlo. –

+1

Questo è certo, è sempre il caso :) Ma in caso di classi di tipi, cosa ha causato esattamente problemi? –

+0

@ ŁukaszLew - no, per quanto ho capito, questa era un'idea completamente nuova di Wadler e Blott. Quindi non potresti andare ad adattare altre soluzioni, per esempio. – Ingo

risposta

77

Credo di essere una delle poche persone che hanno esperienza diretta del perché è stato difficile, dal momento che l'ho implementato in hbc quando non esisteva arte nota.

Quindi ciò che era chiaro dal documento Wadler & Blott era che il controllo dei tipi era un'estensione del controllo di tipo Hindley-Milner e che in fase di esecuzione dovresti passare i dizionari. Da quello a un'implementazione reale è un passo piuttosto grande. Un buon modo per capire la difficoltà è implementarlo effettivamente partendo solo dal documento di Wadler-Blott.

In primo luogo, è necessario venire con l'idea di un controllo di tipo che non solo controlla i tipi, ma trasforma anche il programma; inserire prove (dizionari) durante il controllo dei tipi. Devi anche capire come costruire nuovi dizionari da quelli vecchi usando le dichiarazioni di istanza come sistema di inferenza.

Potrebbe sembrare tutto ovvio in retrospettiva, ma ricorda che da quel momento sono stati scritti molti documenti con spiegazioni. Capire come fare qualcosa da un foglio è molto diverso dal farlo.

Inoltre, si desidera che le classi di tipi siano ragionevolmente efficienti e conducano al proprio insieme di problemi.

+7

Mi piacerebbe una versione più lunga di questa storia se sei disposto a (o lo hai) pubblicato da qualche parte. –

+4

@ JohnF.Miller Beh, sono passati oltre 20 anni fa, quindi i dettagli non sono più così chiari nella mia memoria. – augustss

+6

Puoi entrare in maggiori dettagli? Puoi anche indicare le carte che menzioni? –

Problemi correlati