I started a discussion a few weeks back on some theoretical changes to how exceptions are displayed. That discussion covered a lot of different ground. I'd now like to formally propose the original change I mentioned in that thread:

1.  Add a new method to the Exception typeclass:

    -- | Render this exception value in a human-friendly manner. Default implementation: @show@.
    displayException :: e -> String
    displayException = show

2. Modify GHC's default exception handler to use `displayException` instead of `show`.

This change will, on its own, cause no breakage[1] and, without further action, will have no change in program behavior. It does, however, allow users to begin distinguishing between how their exceptions should be `show`n versus how they should be displayed to an end user.

Note that I am *not* proposing at this time any other changes discussed in the previous thread. If someone wants to propose removing Show superclasses, adding a Read superclass, providing a typeRepStack method[2], or something else, please propose it separately.

Discussion period: two weeks.

Michael

[1] Besides introducing a new, possibly clashing identifier name.
[2] That one actually seems like a very good idea to me.