2011-07-13 12 views
8

Estoy echando un vistazo a este proyecto http://community.haskell.org/~ndm/supero/¿Supero (supercompilador de Haskell) uso?

He descargado y compilado el programa, y ​​podría usarlo en las muestras incluidas. Pero lo intenté en mi código fuente y parece que el programa solo entiende un subconjunto de Haskell.

que tiene algo como esto:

supercompiler: no controlada fromDecl: PatBind (SrcLoc {srcFilename = "unknown.hs", srcLine = 15, srcColumn = 1}) (PTuple [PVar (Ident "ancho"), PVar (Ident "altura")]) Nada (UnGuardedRhs (tupla [Lit (Int 7), Lit (Int 6)])) (BDecls [])

el código está disponible aquí https://github.com/phuc/Score4-haskell/blob/master/Main.hs

¿Cómo obtengo GHC para producir el tipo de Haskell que Supero entiende?

Muchas gracias.

Respuesta

10

Las diapositivas here parecen sugerir que se trata de la primera carrera a través Yhc, luego transformado en una forma de cresta intermedia (de primer orden Haskell Intermedio lenguaje poco - ver diapositivas), y luego, por último, el análisis se puede hacer.

Otra presentación de diapositivas proporciona este diagrama:

Diagram of Compilation Process

3

Como lo entiendo, la versión actual de Supero solamente maneja un subconjunto de Haskell describe en el documento ICFP 2010.

La versión anterior se integró con la tubería YHC y podría manejar un subconjunto más grande. Esto fue hace bastante tiempo y la compilación de YHC en sí misma es bastante destructora de almas. No lo recomendaría.

Max Bolingbroke Actualmente está integrando su propio supercompilador en GHC. Sin embargo, no puedo ver el código en su repositorio GitHub por lo que es posible que aún no esté listo para el consumo público.

+1

Sin embargo, existe una rama 'supercomilation' en el repositorio de GHC. – fuz