I'm new to contributing to GHC.
Today let me suggest new APIs of the
Debug.Trace module, named:
- taggedTraceShowId :: Show a => String -> a -> a
- taggedTraceWith :: (a -> String) -> String -> a -> a
I mean, these new APIs prepend a string as a tag to the output by traceShowId etc.
It helps us recognize what the printed values stand for.
I frequently want such functions and write them manually or copy-and-paste from the Debug.TraceUtils.
I'm tired of that. That's why I made this suggestion.
Comparison with the existing solution
- Debug.TraceUtils:
- Essentially, this suggestion is to add APIs already implemented by TraceUtils.
- As the document of TraceUtils suggests, we can copy and paste the functions from its source, but it's still tiresome.
- Combine Debug.Trace.traceShowId with Debug.Trace.trace:
- e.g. trace "Tag" $ traceShowId x
- A bit hard to type.
- trace always prints a newline, which makes it difficult to tell the tags from the printed value.
--