opción El GHCi -fbreak-on-exception
puede ser útil. Aquí hay una sesión de depuración de ejemplo. Primero cargamos nuestro archivo en GHCi.
$ ghci Broken.hs
GHCi, version 7.0.2: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling Main (Broken.hs, interpreted)
Ok, modules loaded: Main.
Ahora, pasamos a -fbreak-on-exceptions
y localizar nuestra expresión (main
en este caso para todo el programa).
*Main> :set -fbreak-on-exception
*Main> :trace main
Stopped at <exception thrown>
_exception :: e = _
Nos hemos detenido en una excepción. Intentemos ver el código con :list
.
[<exception thrown>] *Main> :list
Unable to list source for <exception thrown>
Try :back then :list
Debido a excepción ocurrió en Prelude.head
, no podemos mirar la fuente directamente. Pero como nos informa GHCi, podemos ir al :back
e intentar enumerar lo que sucedió antes en el rastreo.
[<exception thrown>] *Main> :back
Logged breakpoint at Broken.hs:2:23-42
_result :: [Integer]
[-1: Broken.hs:2:23-42] *Main> :list
1
2 main = print $ head $ filter odd [2, 4, 6]
3
En el terminal, la expresión infractor filter odd [2, 4, 6]
está resaltada en negrita. Esta es la expresión que se evaluó en la lista vacía en este caso.
Para obtener más información sobre cómo utilizar el depurador GHCi, ver the GHC User's Guide.
lo interpiter o compilador uso de u? – Sudantha
utilizo el: GHC 7.0.3 – haskellNewcommer
Hope esto le ayudará a [Cómo “depuración” Haskell con printfs?] [1] [1]: http://stackoverflow.com/preguntas/3546592/cómo-a-debug-Haskell-con-printfs – Sudantha