Add taggedTrace to Debug.Trace

Ben Gamari ben at smart-cactus.org
Thu Jun 7 15:40:45 UTC 2018


Yuji Yamamoto <whosekiteneverfly at gmail.com> writes:

> Nice to meet you, GHC Developers!
> I'm new to contributing to GHC.
>
Hi Yuji!

Thanks for your proposal.

I think this is likely best handled by the Core Libraries Committee
(CC'd). Let's see what they say.



> Today let me suggest new APIs of the Debug.Trace
> <http://hackage.haskell.org/package/base-4.11.1.0/docs/Debug-Trace.html>
> module, named:
>
>    - taggedTraceShowId :: Show a => String -> a -> a
>    - taggedTraceWith :: (a -> String) -> String -> a -> a
>
> These are inspired by Elm's Debug.log
> <http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Debug#log>
> function.
> The prefix "tagged" is named after its argument
> <https://github.com/elm-lang/core/blob/5.1.1/src/Native/Debug.js#L5>.
>
> 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
>    <http://hackage.haskell.org/package/TraceUtils-0.1.0.2/docs/Debug-TraceUtils.html>
>    :
>       - 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.
>
> After receiving some feedback here, I'm going to submit to
> https://github.com/ghc-proposals/ghc-proposals
> Thanks in advance!
>

Personally, I do like the "With" variant as I regularly find myself
needing things like this. I'm a bit unsure of whether we want to bake
the "tag" notion into the interface, however.

Cheers,

- Ben
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180607/ec8253df/attachment.sig>


More information about the ghc-devs mailing list