{-# LANGUAGE CPP #-} #if defined(__GLASGOW_HASKELL__) && (__GLASGOW_HASKELL__ >= 702) {-# LANGUAGE Safe #-} #endif {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE FlexibleInstances #-} {-| 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' exported by "Control.Monad.Loc.TH" -} module Control.Monad.Loc (MonadLoc(..)) where -- | Generating stack traces for failures class Monad m => MonadLoc m where -- | 'withLoc' records the given source location in the failure trace -- if the underlying monad supports recording location traces -- withLoc :: String -> m a -> m a instance Monad m => MonadLoc m where withLoc _ = id;