Why no one uses functional languages
ACM SIGPLAN Notices
Tracing piece by piece: affordable debugging for lazy functional languages
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Algorithmic Program DeBugging
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Run Time Type Information in Mercury
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
The nofib Benchmark Suite of Haskell Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Debugging in a side effect free programming environment
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
HsDebug: debugging lazy programs by not being lazy
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Optimistic evaluation: an adaptive evaluation strategy for non-strict programs
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
How to look busy while being as lazy as ever: the Implementation of a lazy functional debugger
Journal of Functional Programming
Visual haskell: a full-featured haskell development environment
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
RepLib: a library for derivable type classes
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Extended static checking for haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Transforming Haskell for tracing
IFL'02 Proceedings of the 14th international conference on Implementation of functional languages
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Finding the needle: stack traces for GHC
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
A compact fixpoint semantics for term rewriting systems
Theoretical Computer Science
An integrated framework for the diagnosis and correction of rule-based programs
Theoretical Computer Science
Transformation and debugging of functional logic programs
A 25-year perspective on logic programming
From stack traces to lazy rewriting sequences
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Observing SQL queries in their natural habitat
ACM Transactions on Database Systems (TODS)
Hi-index | 0.00 |
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.