2012-04-03 14 views
12

¿Puede GHC o alguna herramienta de pelusa decirme cuándo he proporcionado una firma de tipo para una función que podría ser más polimórfica?¿Puedo recibir advertencias sobre firmas de tipo excesivamente restrictivas?

+1

Tenga en cuenta que la firma de tipo más general no es siempre la mejor. 'asTypeOf' sería bastante sin sentido si tuviera un tipo más general :) y de manera menos trivial, algunas técnicas de sistema tipo como las regiones se basan en restricciones de clase" no utilizadas ". –

Respuesta

7

GHC no hace esto, y una búsqueda rápida de Hackage no revela nada.

Una manera simple, pero posiblemente muy eficaz para poner en práctica tal cosa sería para cargar el módulo en GHCi, utilice :browse para obtener todas las firmas de tipos, a continuación, cargar una copia sin ningún tipo de declaraciones de tipo, utilice :browse de nuevo, y para comparar las dos salidas; luego simplemente imprima todas las líneas que difieren más allá de paréntesis, espacios en blanco y cambio de nombre alfa. Sin embargo, esto no funcionaría perfectamente, especialmente si tiene definiciones cuyos tipos no se pueden inferir.

Tengo la sensación de que una herramienta de este tipo podría generar muchos falsos positivos en la práctica.

Cuestiones relacionadas