Sfortunatamente, molte funzioni di Haskell modello non hanno assolutamente alcuna documentazione. Una di queste funzioni è report
. Prende uno Bool
e uno String
e genera un errore di compilazione con la stringa specificata come messaggio di errore. Qualcuno ha idea di cosa diavolo sia il Bool
? Come meglio posso dire, entrambi i valori fanno esattamente la stessa cosa ...Come funziona Langage.Haskell.TH.report?
6
A
risposta
9
Se lo Bool
è True
, viene segnalato un errore; se è False
, viene segnalato un "avviso", il che significa che il codice del modello continuerà a essere eseguito per raccogliere più "avvisi".
2
Osservando il codice sorgente, report
chiamate qReport
, che è un metodo di una classe denominata Quasi
. Questo metodo ha in realtà qualche maledetta documentazione, anche se solo un piccolo frammento. Cito:
Segnala un errore (
True
) o avviso (False
) ... ma continua; utilizzarefail
per fermare
così sembra a fare il mio incidente TH giunzione con un messaggio di errore, ho solo bisogno di chiamare fail
invece. Speriamo che questa informazione possa essere utile a chiunque altro cercando di capirlo ...
Problemi correlati
- 1. Come funziona Angular $ q.quando funziona?
- 2. Come funziona! Stringa (enum.member) funziona?
- 3. Java non funziona come funziona?
- 4. scala - Come funziona method :: funziona in List?
- 5. Come funziona `if (Test-Path ...)` funziona davvero?
- 6. Come funziona questa funzione "ritardo" funziona
- 7. Come funziona davvero volatile?
- 8. Come funziona [UIAlertView show]?
- 9. Come funziona asp.net mvc?
- 10. Come funziona ReCAPTCHA?
- 11. Come funziona disqus?
- 12. Come funziona un ActionListener?
- 13. Come funziona il casting?
- 14. Come funziona array_diff?
- 15. ASP.NET Come funziona ViewState
- 16. Come funziona Lucene
- 17. Come funziona PHP - letteratura
- 18. JavaScript: come funziona Greasemonkey
- 19. come funziona presentPopoverFromRect?
- 20. Come funziona sched_setaffinity()?
- 21. come boost :: ~ shared_ptr funziona?
- 22. Come funziona Proxifier?
- 23. DirectX - Come funziona VertexBuffer?
- 24. Come funziona gcc `__thread`?
- 25. Come funziona dispatch_set_target_queue?
- 26. Come funziona Spring ClassPathResource?
- 27. Come funziona matrix.setlookatm?
- 28. Vai: Come funziona go.file.go
- 29. Come funziona .ToUpper()?
- 30. Come funziona TouchImageView?
Avevo la sensazione che sarebbe stato qualcosa del genere, ma non ero sicuro di quale fosse l'errore e quale fosse un avvertimento. Indipendentemente da ciò, sembra che la compilazione continua in entrambi i modi. (!) Mi sarei aspettato di segnalare un errore per fermare la compilazione, ma non sembra farlo ... – MathematicalOrchid
Dalla documentazione interna: 'Segnala un errore (Vero) o avviso (Falso) ... ma continua ; usa 'fallire' per fermarsi'. Quindi, a quanto pare, devi prenderti cura del passo "fallisci"; Trovo che questa sia una strana decisione di design. – dflemstr
Oh, mi hai battuto. :-) Sì, davvero strano. Dai miei test, sembra che la sola chiamata di "fail" sia sufficiente per fermare la compilazione, fornendo la stringa come messaggio di errore e la posizione della giunzione come origine del problema. Che è praticamente quello che volevo ... – MathematicalOrchid