Proposal: Debug.Trace.traceWith

Kris Nuttycombe kris.nuttycombe at
Sat Feb 10 01:08:28 UTC 2018

When using Debug.Trace for debugging, a very common operation is to prefer
to trace only some subset or function of an intermediate result. As a
consequence, I propose adding the following function to Debug.Trace:

traceWith :: (Show b) => (a -> b) -> a -> a
traceWith f a = trace (show $ f a) a

While it's trivial to define, I have found this to be one of the most
useful functions in my trace-based debugging toolkit, hence my proposal
that it be added to base. It generalizes `traceShowId` in a meaningful and
useful fashion.

As this is the first such proposal I've put forth, please let me know if
I'm doing anything wrong with it!


Kris Nuttycombe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list