2013-06-15 16 views
8

Real World Haskell dice "Il compilatore Haskell può avvisarci se introduciamo un nome di variabile in un modello, ma non lo usiamo nel corpo di una funzione".Avviso variabile non utilizzata nel codice Haskell

Spesso mi dimentico di usare le variabili che leggo, quindi voglio usare questa funzione. Ma i miei ghci e ghc sembrano andare bene con variabili inutilizzate, e in realtà non l'ho mai visto da quando ho iniziato ad imparare Haskell qualche mese fa.

Come posso utilizzare questa funzione? O il compilatore Haskell non ha più questa caratteristica?

risposta

9

Come detto prima, l'opzione è -fwarn-unused-binds o -Wall per tutti gli avvisi. Un altro è -Werror per fare in modo che gli avvisi interrompano la compilazione.

Per utilizzarli, passarli a ghc o ghci sulla riga di comando. Inoltre, durante una sessione in ghci, è possibile digitare

:set -fwarn-unused-binds 

Con cabal è possibile aggiungere ghc-options alla sezione eseguibile. Per esempio:

executable my-program 
    main-is:  MyProgram.hs 
    hs-source-dirs: src 
    ghc-options: -Wall 

Ora, in esecuzione cabal configure && cabal build (e altri comandi) utilizzerà l'opzione -Wall.

+0

Grazie per la risposta! – Tengu

5

È possibile aggiungere il flag -fwarn-unused-binds a ghc o ghci. Per abilitare altri avvisi utili, utilizzare -W. Per abilitare tutti gli avvisi, utilizzare -Wall. Ad esempio:

ghci -fwarn-unused-binds 
+0

Grazie per la risposta. So come aggiungere flag durante la compilazione con 'ghc', ma non so come farlo con' ghci'. C'è qualche comando specifico? – Tengu

+0

Avvia 'ghci' con il comando come nel mio esempio. Puoi anche digitare per es. ': imposta -fwarn-unused-binds 'alla riga di comando ghci. – dflemstr

6

È possibile guardare Warnings. Io generalmente uso -Wall nei miei progetti che mostra variabili binded inutilizzate insieme a molti altri avvisi utili. C'è anche una bandiera specifica (-fwarn-unused-binds) per fare solo quello che vuoi.

+0

Grazie mille per la risposta! – Tengu

Problemi correlati