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.