Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Tracing utilities
Synopsis
- pprTrace :: String -> SDoc -> a -> a
- pprTraceM :: Applicative f => String -> SDoc -> f ()
- pprTraceDebug :: String -> SDoc -> a -> a
- pprTraceIt :: Outputable a => String -> a -> a
- pprTraceWith :: String -> (a -> SDoc) -> a -> a
- pprSTrace :: HasCallStack => SDoc -> a -> a
- pprTraceException :: ExceptionMonad m => String -> SDoc -> m a -> m a
- warnPprTrace :: HasCallStack => Bool -> String -> SDoc -> a -> a
- pprTraceUserWarning :: HasCallStack => SDoc -> a -> a
- trace :: String -> a -> a
Documentation
pprTraceDebug :: String -> SDoc -> a -> a Source #
pprTraceIt :: Outputable a => String -> a -> a Source #
pprTraceIt desc x
is equivalent to pprTrace desc (ppr x) x
pprTraceWith :: String -> (a -> SDoc) -> a -> a Source #
pprTraceWith desc f x
is equivalent to pprTrace desc (f x) x
.
This allows you to print details from the returned value as well as from
ambient variables.
pprSTrace :: HasCallStack => SDoc -> a -> a Source #
If debug output is on, show some SDoc
on the screen along
with a call stack when available.
pprTraceException :: ExceptionMonad m => String -> SDoc -> m a -> m a Source #
pprTraceException desc x action
runs action, printing a message
if it throws an exception.
warnPprTrace :: HasCallStack => Bool -> String -> SDoc -> a -> a Source #
Just warn about an assertion failure, recording the given file and line number.
pprTraceUserWarning :: HasCallStack => SDoc -> a -> a Source #
For when we want to show the user a non-fatal WARNING so that they can report a GHC bug, but don't want to panic.
The trace
function outputs the trace message given as its first argument,
before returning the second argument as its result.
For example, this returns the value of f x
and outputs the message to stderr.
Depending on your terminal (settings), they may or may not be mixed.
>>>
let x = 123; f = show
>>>
trace ("calling f with x = " ++ show x) (f x)
calling f with x = 123 "123"
The trace
function should only be used for debugging, or for monitoring
execution. The function is not referentially transparent: its type indicates
that it is a pure function but it has the side effect of outputting the
trace message.