[Haskell] A few newbie questions about tracing/debugging and order of execution

Robert Dockins robdockins at fastmail.fm
Wed Dec 28 13:02:22 EST 2005

On Dec 28, 2005, at 12:07 PM, Hunter Kelly wrote:

> Yes, thank you, that did the trick!  It produced the output for all  
> steps,
> and in the order I would expect.
> Are there other techniques that people use to get debugging output?

Well, if you are writing code in the IO monad, obviously you can just  
insert 'putStrLn', just like in your favorite imperative language.   
For pure code, I generally try to write small functions and then  
compose them to do larger tasks.  That way I can exercise each  
smaller function individually and see that I get the results I  
expect.  It is also more likely that your functions will just be  
"obviously correct".

If that isn't possible for some reason I go to Debug.Trace and try to  
find good places to sprinkle in the calls to 'trace'.  I find that  
attaching them to control structures usually works best.

If that doesn't cut it for you, there are also some interactive  
Haskell debuggers. (http://www.haskell.org/libraries/#tracing).

Rob Dockins

Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
           -- TMBG

More information about the Haskell mailing list