trace -package:base is:exact package:base-prelude

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 but first outputs the message.
>>> 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.