Documentation

When called, trace outputs the string in its first argument, before
returning the second argument as its result. The trace function is not
referentially transparent, and should only be used for debugging, or for
monitoring execution. Some implementations of trace may decorate the string
that's output to indicate that you're tracing. The function is implemented on
top of putTraceMsg.