S. Marlow, J. Iborra, B. Pope, and A. Gill, “A lightweight interactive debugger for Haskell,” in Proceedings of the 2007 ACM SIGPLAN Workshop on Haskell, ACM Press, September 2007.



This paper describes the design and construction of a Haskell source-level debugger built into the GHCi interactive environment. We have taken a pragmatic approach: the debugger is based on the traditional stop-examine-continue model of online debugging, which is simple and intuitive, but has traditionally been shunned in the context of Haskell because it exposes the lazy evaluation order. We argue that this drawback is not as severe as it may seem, and in some cases is an advantage.

The design focuses on availability: our debugger is intended to work on all programs that can be compiled with GHC, and without requiring the programmer to jump through additional hoops to debug their program. The debugger has a novel approach for reconstructing the type of runtime values in a polymorphic context. Our implementation is light on complexity, and was integrated into GHC without significant upheaval.


  author = {Simon Marlow and Jos\'{e} Iborra and Bernard Pope and Andy Gill},
  title = {A lightweight interactive debugger for {H}askell},
  booktitle = {Proceedings of the 2007 {ACM} {SIGPLAN} {W}orkshop on Haskell},
  year = {2007},
  month = {September},
  publisher = {ACM Press},