2010-01-24 11 views

Respuesta

12

Puede tratar de hacerlo estableciendo un punto de interrupción en él, por lo que la función está dentro del alcance del depurador.

También creo que EclipseFP puede decirle el tipo de cosas cuando pasa el ratón sobre ellas, al menos algunas veces.

+3

Whoa, acaba de darse cuenta de que los puntos de interrupción eran una opción, después de publicar una solución a medio hacer enrevesada ... Entonces noté esta respuesta. GHCi imprime los tipos de expresiones en el alcance actual cuando se detiene en un punto de interrupción sin ningún estímulo especial, por lo que es solo una cuestión de ubicación. +1! –

+3

Bonito consejo, pero no funciona si el código no se compila. La respuesta de Tom puede ser útil. –

21

Este es un truco rápido y feo, pero lo que suelo hacer es utilizar la función de la manera incorrecta y leer el mensaje de error: La salida

inc x = x + 1 
    where 
    f (y, z) = y + z 
    g = f :: Char 

GHCi:

Couldn't match expected type `Char' 
     against inferred type `(t, t) -> t' 
In the expression: f :: Char 

Aunque esto deja fuera el contexto Num t =>, esto generalmente me proporciona suficiente información para continuar.

+1

+1 ¡Excelente! ¡Esto realmente me ayudó a entender una definición de función peluda! Nota: esto funciona en *** cualquier expresión *** en la definición de la función. Por ejemplo, si quieres ver el tipo de 'blah' en' fx = foo + blah', do - 'fx = foo + (deja exp = blah en exp :: Char)'. –

Cuestiones relacionadas