2012-09-11 15 views
33

C'è un modo, standard o un trucco intelligente, per fare invocare GHC su un file solo eseguire il type-checker? Per esempio.Effettua il controllo di tipo GHC solo?

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

Nessun file di output, non .Ciao o .o, ecc non vogliono/non può utilizzare l'API GHC. Sto parlando del programma da riga di comando, qui.

+2

Perché non utilizzare l'API GHC? Sembra il genere di cosa per cui è. –

+2

@ C.A.McCann Avendolo come una dipendenza aumenta di molto il tempo di collegamento e le dimensioni eseguibili. E ho avuto un sacco di problemi con esso, vedere questi messaggi di errore dispari (che non compaiono quando viene chiamato l'eseguibile) http://hpaste.org/74600 –

risposta

41

Che dire ghc -fno-code file.hs. Non genererà altri file e mostrerà errori se i tuoi file non digitano tipicamente.

Caveat: questo non fare analisi su in-esaustivo modello corrisponde, quindi, se si desidera che tali ulteriori avvertimenti utili, non utilizzare questa opzione solo.

11

Ecco un hack:

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, sono certo che questo è intelligente, ma puoi spiegarlo? – Tarrasch

+1

@Tarrasch Funziona per me quando uso 'ghc test.hs -e 'restituisce" test.hs "''. Penso che funzioni perché '-e' è la modalità di valutazione delle espressioni, che per quanto posso dire significa che, mentre ghc analizza e typechecks test.hs, non ha bisogno di collegarlo per eseguire l'espressione' return "test.hs "', quindi non genera .o .hi ecc – AndrewC

Problemi correlati