2012-04-03 14 views
12

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?

+1

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 ". –

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