Tendo a digitare ripetutamente i miei programmi in un terminale modificandoli nel mio editor di scelta per ottenere un feedback in tempo reale. In genere eseguo qualcosa simile a: watch -d -n 1 "ghc -fno-code NoIncompletePM.hs"
.ghc non segnala corrispondenze non esaustive del modello quando si utilizza il flag `no-code`
Sfortunatamente il flag no-code
che uso per evitare di compilare ancora e ancora codice non mi interessa ancora sembra essere incompatibile con lo warn-incomplete-patterns
. Per esempio. con questo programma:
{-# OPTIONS -Wall #-}
module NoIncompletePM where
argh :: Bool -> Bool
argh True = True
ho mai ottenere alcun avviso che argh
manca un caso per False
. È possibile ottenere tutti questi avvisi rimuovendo la bandiera no-code
e aggiungendo lo force-recomp
uno (in modo che l'avviso sia visualizzato ogni volta e non solo la prima volta che viene compilato) ma io voglio proprio evitare di compilarlo codice ...
Non sono riuscito a trovare nulla nel manuale che descrivesse questi come incompatibili, quindi suppongo che sia un comportamento inaspettato o sto facendo qualcosa di sbagliato. Qualche indizio?
Punti secondari: 1) Il polling con 'watch' sembra non ottimale quando non si modifica il codice. Potresti scrivere il tuo strumento che esegue ghc solo quando la fonte è cambiata: in tal caso manterresti i vecchi messaggi, rendendo 'force-recomp' inutile. 2) Emacs Flymake fa esattamente quello che stai cercando di fare (non so quali flag passi a ghc - potrebbe generare del codice dopo tutto). Sono abbastanza sicuro che ci siano anche altri editor con la stessa funzionalità. 3) 'no-code' che influenza gli avvisi sembra davvero sbagliato, ma non riesco a riprodurlo. – chi