2010-10-05 12 views
11

Quiero poner a prueba la aplicación de una optimización del compilador llevando a cuestas en el proceso de compilación GHC y alterar su representación Core. La idea sería tener algo como:¿Es posible utilizar la API de GHC de modificar un programa durante la compilación de ella?

runGhc (Just libdir) $ do 
    ... 
    c <- compileToCoreModule targetFile 
    compileCoreToObj False (modify c) 
    ... 

donde modify toma la representación Core y devuelve la versión modificada. Este código, sin embargo, falla (incluso cuando Modificar no hace nada en absoluto) con el mensaje no es muy útil:

expectJust mkStubPaths 

Cualquier ideas sobre cómo hacer este trabajo, o si es aún posible llevar a cabo una transformación código de esta manera ?

Respuesta

9

Eso suena como un error en compileCoreToObj a mí. Por favor, report it.

+0

Yo era reacia a informar de ello porque no estaba seguro de si yo estaba usando correctamente las funciones. ¿Hay algún ejemplo de este tipo de transformaciones? – matiash

+0

No sé de ningún ejemplo específico, no. –

+0

¿Hay algún progreso con este problema? Intenté hoy exactamente el mismo código y resultó en el mismo mensaje de error. –

6

GHC tiene soporte para plugins ahora, que parecen hacer exactamente lo que quiere.

Cuestiones relacionadas