Can GHC o qualche strumento di lanugine mi dicono quando ho fornito una firma di tipo per una funzione che potrebbe essere più polimorfica?Posso ricevere avvisi sulle firme dei tipi eccessivamente restrittive?
12
A
risposta
7
GHC non esegue questa operazione e una rapida ricerca di Hackage non restituisce nulla.
Un modo semplice, ma possibilmente efficace per implementare una cosa del genere sarebbe caricare il modulo in GHCi, usare :browse
per ottenere tutte le firme del tipo, quindi caricare una copia senza alcun tipo di firme, usare nuovamente :browse
e confrontare le due uscite; quindi stampa semplicemente tutte le linee che differiscono da quelle tra parentesi, spazio bianco e rinominazione alfa. Tuttavia, questo non funzionerebbe perfettamente, specialmente se si hanno definizioni i cui tipi non possono essere dedotti.
Ho la sensazione che uno strumento del genere possa generare molti falsi positivi nella pratica.
Problemi correlati
- 1. firme/tipi in programmazione funzionale (OCaml)
- 2. Frecce/HXT e tipi di firme
- 3. Diversi tipi avere stesse firme in CIL
- 4. avvisi di django-sedano sulle impostazioni.DEBUG
- 5. Cosa devo sapere sulle firme XML per far funzionare SAML?
- 6. Come ottenere avvisi sulle variabili assegnate, ma non più utilizzate?
- 7. Le firme dell'indice oggetto sono equivalenti ai tipi di array?
- 8. App convertita in ARC, ora ricevendo avvisi sulle mie proprietà
- 9. Come sopprimere gli avvisi sulle variabili non utilizzate in C++?
- 10. Prevenire cast implicito dei tipi numerici nel costruttore in C++
- 11. firme funzione in julia
- 12. Tipo firme
- 13. javac e scalac avvisi come errori solo per alcuni tipi
- 14. Estensione Python C: firme dei metodi per la documentazione?
- 15. Teoria dei tipi: tipi di tipo
- 16. Raccolta dei tipi generici
- 17. Posso specializzare le definizioni dei tipi in Julia?
- 18. Come posso eseguire il controllo dei tipi in MongoDB?
- 19. Elimina tutti i tipi di output tranne errori e avvisi
- 20. Confronto dei tipi con Swift
- 21. Come posso ricevere i tocchi usando tvOS?
- 22. Come posso ricevere un JSON in symfony2
- 23. Denominazione dei tipi di enumerazione
- 24. Limitazione dei tipi di dati
- 25. WinRT Documentazione dei tipi proiettati
- 26. Ordine dei tipi di definizione
- 27. spiegazione dei tipi scala f
- 28. TipoScript: conversione dei tipi incorporati
- 29. Come unire i tipi di modulo (firme) di OCaml che definiscono lo stesso tipo?
- 30. Rspec: Come sopprimere avvisi e notifiche durante l'esecuzione dei test?
Si noti che la firma di tipo più generale non è sempre la migliore. 'asTypeOf' sarebbe privo di significato se avesse un tipo più generale :) e meno banalmente, alcune tecniche di sistema tipo come le regioni si basano su vincoli di classe" inutilizzati ". –