Ah, that makes sense, I forgot about the escaping issues.

On Sat, Feb 10, 2018 at 9:09 AM, David Feuer <david.feuer@gmail.com> wrote:
On Feb 10, 2018 11:53 AM, "Kris Nuttycombe" <kris.nuttycombe@gmail.com> wrote:

On Fri, Feb 9, 2018 at 7:07 PM, David Feuer <david.feuer@gmail.com> wrote:
Other another bike-shed color:

traceWith :: (a -> String) -> a -> a
traceWith f a = trace (f a) a

traceShowWith :: Show b => (a -> b) -> a -> a
traceShowWith f = traceWith (show . f)

Is there some situation where the `Show String` instance wouldn't be in scope? If `b` is `String` it works out just fine, so the first definition you gave here seems superfluous.

If the strings have non-ASCII characters, show will mangle them.