This module exposes some useful tracing functions that should have been exported by Debug.Trace.
Feel free to copy&paste these functions into modules that need them, that may be easier to remove/clean up than adding a cabal dependency.
Generate an identity function that has the side-effect of showing the value that passes through it.
traceId "x,y = " (x, y)
|:: Show b|
|=> (a -> b)|
Function to preprocess the value before showing it
Prefix string to use before showing the result value
Generate an identity function that has the side-effect of tracing the value that passes through it by first processing it and then showing the result.
traceIdVia (take 5) "First 5 sorted elements of: " result
fmap (traceIdVia objName "The object we got") . receiveObject
Convert a pure function to one that also has a side effect of tracing the value of the input and output values that pass through the function.
traceAround "filterEntries" filterEntries entries
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 but first outputs the message.
trace ("calling f with x = " ++ show x) (f x)
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