monadloc-0.3: A class for monads which can keep a monadic call trace

Control.Monad.Loc

Description

This package defines a MonadLoc class for monads which support Monadic Call Traces. See http:pepeiborra.posterous.com/monadic-stack-traces-that-make-a-lot-of-sense

  • Traces are only provided for explicitly annotated program points.
  • This package installs the MonadLoc preprocessor for this purpose. To enable it include the following pragma at the top of your haskell source files:
     { -# OPTIONS_GHC -F -pgmF MonadLoc #- }
  • There is also the TH macro withLocTH to manually annotate program points, but you should always use the preprocessor if possible.

Synopsis

Documentation

class Monad m => MonadLoc m whereSource

Generating stack traces for failures

Methods

withLoc :: String -> m a -> m aSource

withLoc records the given source location in the failure trace if the underlying monad supports recording location traces

Instances

Monad m => MonadLoc m 

withLocTH :: Q ExpSource

withLocTH is a convenient TH macro which expands to withLoc <source location> It should only be used when the MonadLoc preprocessor is not available. Usage:

 f x = $withLocTH $ do
          $withLocTH $ something
          x < -$withLocTH $ something-else
          ...

NOTE: unfortunately type signatures are necessary when using withLocTH