2012-09-11 1 views
33

¿Hay alguna manera, ya sea estándar, o un truco inteligente, para hacer que la invocación de GHC en un archivo solo ejecute el verificador de tipos? P.ej.¿Haces solo la verificación de tipo de GHC?

$ ghc --just-check-the-types x.hs 
$ 

Sin archivos de salida, no .hi o .o, etc. No quiero/no puedo usar la API de GHC. Solo estoy hablando sobre el programa de línea de comandos, aquí.

+2

¿Por qué no utilizar la API de GHC? Esto suena como el tipo de cosa para la que es. –

+2

@ C.A.McCann Tenerlo como una dependencia aumenta mucho el tiempo de vinculación y el tamaño del ejecutable. Y he tenido muchos problemas con él, vea estos mensajes de error (que no aparecen cuando se llama al ejecutable) http://hpaste.org/74600 –

Respuesta

41

¿Qué hay de ghc -fno-code file.hs. No generará otros archivos y mostrará errores si sus archivos no comprueban.

Advertencia: esto será no haga el análisis en coincidencias de patrones exhaustivos, por lo que si desea esas advertencias útiles adicionales, no use esta opción solo.

11

Aquí hay un truco:

crabgrass:~/programming% ghc test.hs -e 'return 0' 

test.hs:1:7: 
    No instance for (Num (a0 -> t0)) 
     arising from the literal `3' 
    Possible fix: add an instance declaration for (Num (a0 -> t0)) 
    In the expression: 3 
    In the expression: 3 4 
    In an equation for `foo': foo = 3 4 
zsh: exit 1  ghc test.hs -e 'return 0' 
+2

-1, estoy seguro de que esto es inteligente, pero puedes explicar esto? – Tarrasch

+1

@Tarrasch me funciona cuando uso 'ghc test.hs -e 'return" test.hs "''. Creo que funciona porque '-e' es el modo de evaluación de expresión, que por lo que puedo decir significa que, mientras que ghc analiza y tipea test.hs, no necesita vincularlo para ejecutar la expresión' return 'test.hs "', por lo que no genera .o .hi, etc. – AndrewC

Cuestiones relacionadas