[Haskell] ANNOUNCE: control-monad-exception 0.5 with monadic call
traces
Jose Iborra
pepeiborra at gmail.com
Mon Nov 2 17:53:38 EST 2009
Folks,
I'm happy to announce a new release of control-monad-exception with
monadic call traces,
available in Hackage. Grab it now while it is still online!
Monadic stack traces are described in detail in a blog post [1].
In short, what this means for your code is the ability to generate
errors like this:
500 Internal Server Error
The CGI server failed with the following error:
DeleteException (BmPK 2009-10-26 19:39:51.031297 UTC "Testing RPO")
in deleteBenchmarkFromPK, NarradarBenchmarkDB(src/
NarradarBenchmarkDB.hs): (186, 44)
deleteBenchmarkFromPK, NarradarBenchmarkDB(src/
NarradarBenchmarkDB.hs): (186, 25)
deleteBenchmarkFromPK, NarradarBenchmarkDB(src/
NarradarBenchmarkDB.hs): (184, 17)
deleteBenchmarkFromPK, NarradarBenchmarkDB(src/
NarradarBenchmarkDB.hs): (180, 90)
deleteTests, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs):
(108, 3)
deleteTests, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs):
(106, 20)
cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (52,
33)
cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (52,
30)
cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (50, 9)
cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (46,
11)
Currently a preprocessor is used to insert the source location
information in the
right places. The preprocessor is invoked by including the following
pragma at
the top of your Haskell source files:
{-# OPTIONS_GHC -F -pgmF MonadLoc #-}
In addition, you need to be in a monad which implements the Monadloc
interface,
currently the EMT monad from control-monad-exception being the only one,
although it is trivial to enhance any error monad to implement this
interface.
In addition, support for monadic stack traces could be built into GHC
and:
1. No preprocessor would be needed.
2. Eventually the IO monad could be enhanced to provide stack traces
like this.
Enjoy your monadic call traces !
Pepe Iborra
[1] - http://pepeiborra.posterous.com/monadic-stack-traces-that-make-a-lot-of-sense
More information about the Haskell
mailing list