<div dir="ltr">Nice to meet you, GHC Developers!<div>I'm new to contributing to GHC.</div><div><div><br></div><div>Today let me suggest new APIs of the <a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/Debug-Trace.html" target="_blank">Debug.Trace</a> module, named:</div><div><ul><li>taggedTraceShowId :: Show a => String -> a -> a</li><li>taggedTraceWith :: (a -> String) -> String -> a -> a</li></ul></div><div>These are inspired by <a href="http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Debug#log" target="_blank">Elm's Debug.log</a> function.<br>The prefix "tagged" is named after <a href="https://github.com/elm-lang/core/blob/5.1.1/src/Native/Debug.js#L5" target="_blank">its argument</a>.</div><div><br></div><div>I mean, these new APIs prepend a string as a tag to the output by traceShowId etc.</div><div>It helps us recognize what the printed values stand for.</div><div>I frequently want such functions and write them manually or copy-and-paste from the Debug.TraceUtils.</div><div>I'm tired of that. That's why I made this suggestion.</div><div><br></div><div><b>Comparison with the existing solution</b></div><div><ul><li><a href="http://hackage.haskell.org/package/TraceUtils-0.1.0.2/docs/Debug-TraceUtils.html" target="_blank">Debug.TraceUtils</a>:</li><ul><li>Essentially, this suggestion is to add APIs already implemented by TraceUtils.</li><li>As the document of TraceUtils suggests, we can copy and paste the functions from its source, but it's still tiresome.</li></ul><li>Combine Debug.Trace.traceShowId with Debug.Trace.trace:</li><ul><li>e.g. trace "Tag" $ traceShowId x</li><li>A bit hard to type.</li><li>trace always prints a newline, which makes it difficult to tell the tags from the printed value.</li></ul></ul><div>After receiving some feedback here, I'm going to submit to <a href="https://github.com/ghc-proposals/ghc-proposals">https://github.com/ghc-proposals/ghc-proposals</a><br>Thanks in advance!</div></div><div><br></div>-- <br><div dir="ltr" class="gmail-m_5069268375235445700m_-358281720230564404m_-1413400237459483333m_-2423606474441355992m_232303946863232922m_1538653499826503309m_5141828975068092826gmail-m_-3022327430039633699m_-3874007967401873153gmail_signature"><div dir="ltr"><div>Yuji Yamamoto<br>twitter: @igrep<br>GitHub: <a href="https://github.com/igrep" target="_blank">https://github.com/igrep</a></div><div>GitLab: <a href="https://gitlab.com/igrep" target="_blank">https://gitlab.com/igrep</a><br>Facebook: <a href="http://www.facebook.com/igrep" target="_blank">http://www.facebook.com/igrep</a><br>Google+: <a href="https://plus.google.com/u/0/+YujiYamamoto_igrep" target="_blank">https://plus.google.com/u/0/+YujiYamamoto_igrep</a></div></div></div></div></div>