[Haskell-cafe] Debuggingy

Stefan O'Rear stefanor at cox.net
Sat May 5 00:43:09 EDT 2007


On Sat, May 05, 2007 at 11:36:16AM +0700, Monang Setyawan wrote:
> Hi, I'm a beginner Haskell user.
> 
> Is there any way to trace/debug the function application in GHC?

Absolutely!

stefan at stefans:/tmp$ ghci X.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |    GHC Interactive, version 6.7.20070502, for Haskell 98.
/ /_\\/ __  / /___| |    http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|    Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( X.hs, interpreted )
Ok, modules loaded: Main.
*Main> :break fac
Breakpoint 0 activated at X.hs:(2,0)-(5,34)
*Main> fac 3
Stopped at X.hs:(2,0)-(5,34)
_result :: Int
[X.hs:(2,0)-(5,34)] *Main> :step
Stopped at X.hs:2:8-15
_result :: Int
x :: Int
fac' :: Int -> Int -> Int
[X.hs:2:8-15] *Main> x
3
[X.hs:2:8-15] *Main> :step
Stopped at X.hs:(4,8)-(5,34)
_result :: Int
[X.hs:(4,8)-(5,34)] *Main> :list
3      where
4          fac' 0 a = a
5          fac' k a = fac' (k-1) (a*k)
6  
[X.hs:(4,8)-(5,34)] *Main> :step
Stopped at X.hs:5:19-34
_result :: Int
a :: Int
ds :: Int
[X.hs:5:19-34] *Main> a
1
[X.hs:5:19-34] *Main> ds
3
[X.hs:5:19-34] *Main> :list
4          fac' 0 a = a
5          fac' k a = fac' (k-1) (a*k)
6  
[X.hs:5:19-34] *Main> Leaving GHCi.
stefan at stefans:/tmp$ cat X.hs
fac :: Int -> Int
fac x = fac' x 1
    where
        fac' 0 a = a
        fac' k a = fac' (k-1) (a*k)
stefan at stefans:/tmp$ 

Stefan


More information about the Haskell-Cafe mailing list