2012-03-07 19 views
41

En la diapositiva 30/78 de la presentación this, Simon sugiere que la implementación de las clases de tipo fue una "desesperación" al principio. ¿Alguien sabe por qué fue eso?¿Por qué las clases de tipos fueron difíciles de implementar?

+1

No es un experto en conocimientos Haskell, pero probablemente porque nunca se había hecho antes, y nadie sabía cómo hacerlo todavía. –

+1

Eso es seguro, siempre es el caso :) Pero en el caso de las clases de tipo, ¿qué fue exactamente lo que causó problemas? –

+0

@ ŁukaszLew - no, por lo que yo entiendo, esta era una idea completamente nueva de Wadler y Blott. Entonces no podrías ir y adaptar otras soluciones, por ejemplo. – Ingo

Respuesta

77

Supongo que soy una de las pocas personas que tienen experiencia directa de por qué fue difícil, ya que lo implementé en hbc cuando no existía el estado de la técnica.

Lo que quedó claro en el documento de Wadler & Blott fue que la verificación de tipo era una extensión de la comprobación de tipo Hindley-Milner y que en tiempo de ejecución debería pasar diccionarios. De eso a una implementación real es un paso bastante grande. Una buena forma de entender la dificultad es implementarla desde el papel de Wadler-Blott.

En primer lugar, debe tener la idea de un comprobador de tipos que no solo verifique los tipos sino que también transforme el programa; insertar evidencia (diccionarios) mientras se comprueba el tipo. También necesita averiguar cómo construir diccionarios nuevos a partir de los antiguos utilizando las declaraciones de instancia como un sistema de inferencia.

Puede parecer obvio en retrospectiva, pero recuerde que desde entonces se han escrito muchos documentos con explicaciones. Comprender cómo hacer algo a partir de un documento es muy diferente de crearlo en primer lugar.

Además, desea que las clases de tipos sean razonablemente eficientes, lo que conduce a su propio conjunto de problemas.

+7

Me encantaría una versión más larga de esta historia si está dispuesto a (o ha) publicado en alguna parte. –

+4

@ JohnF.Miller Bueno, hace más de 20 años, así que los detalles ya no están tan claros en mi memoria. – augustss

+6

¿Puedes entrar en más detalles? ¿También puede señalar los documentos que menciona? –

Cuestiones relacionadas