¿Es posible consultar el ghci para el tipo inferido para una función dentro de otra función?¿Puede GHCi decirme el tipo de función local de Haskell?
Respuesta
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.
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 ¡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)'. –
Con GHC 7.8+, solo agregue `asTypeOf` _
a la expresión.
Consulte Find out the type of an expression/function with typed holes para una explicación más detallada.
- 1. ¿Por qué GHCi no puede resolver el tipo de [[]]?
- 2. Strange Haskell/GHCi issue
- 3. Haskell csv-conducto en GHCi
- 4. Haskell: obteniendo el tipo estático de una expresión
- 5. ghci tab-completion en haskell-mode
- 6. Haskell/Miranda: Encuentra el tipo de la función
- 7. ¿Cómo es el tipo de `([] ==) []` inferido haskell?
- 8. ghci no cargar la función de archivo
- 9. ¿Cómo puedo ver la definición de una función en Haskell/GHCi?
- 10. No se puede utilizar el tipo de firma ghci-inferido para la función de regresar Sing (d :: Símbolo)
- 11. Aplicación de función Haskell
- 12. ¿Cómo se verifica el tipo de una variable local?
- 13. Haskell/GHCi - carga de módulos de diferentes directorios
- 14. ubuntu Haskell ghci 7.4.1 no pudo encontrar el módulo "System.Random"
- 15. En GHCi, ¿por qué el tipo de la función arrow `: kind (->)` incluye signos de interrogación `(->) :: ?? ->? -> * `?
- 16. La función de Haskell no termina
- 17. determinar el comportamiento de la función del tipo de la función
- 18. Creando una instancia de la clase de tipo de lectura en Haskell para el tipo de datos personalizado
- 19. Variable de tipo de instancia en Haskell
- 20. ¿Alguien puede decirme qué 'fb: admins' no se pudo analizar como el tipo 'fbid' significa?
- 21. Confusión con el tipo de inferencia Haskell
- 22. ghci que muestra la pila de ejecución
- 23. jerarquía de clases tipo semigrupo/Monoid/Grupo de errores Haskell
- 24. Una función de tipo Haskell: IO String-> String
- 25. Haskell: la inferencia de tipos y composición función
- 26. ¿Cómo uso una función de biblioteca Haskell?
- 27. familias de tipo Haskell y argumentos ficticios
- 28. ¿Cómo se define una función en ghci en múltiples líneas?
- 29. Tipo específico de devolución dentro de Haskell
- 30. ghci -No en el alcance: 'mensaje
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! –
Bonito consejo, pero no funciona si el código no se compila. La respuesta de Tom puede ser útil. –