On Wed, Oct 29, 2014 at 10:45 AM, Simon Peyton Jones <simonpj@microsoft.com> wrote:

As I recently commented on this list[1], the Show typeclass is overloaded with multiple meanings (serialization, debug info, and user-friendly data display). The general consensus seems to be that the official semantics for Show should be for serialization (as paired up with Read).

 

Really?  My instinct is otherwise: to use Show for human-readable display, and Binary for serialisation.  Show/Read is a terribly inefficient serialisation format; as soon as you want to do it for real you end up with Binary anyway.  And Show is already well established for human-readable purposes – that was one of its primary original purposes.

 

Simon


My weak vote in that thread went towards Show for human-readable display, but there was some quite harsh objection to that position. In this thread too you can see people wanting a direct encoding of types which can be copy-pasted into a Haskell source file. Personally, I don't see much need for that, and especially given the new ability to essentially auto-derive Binary instances (via Generic), Show/Read serialization seems fairly pointless.

Nonetheless, making a proposal that doesn't enforce a changed semantics on the Show typeclass seems like the path of least resistance. If others want to jump back into the previous topic and try to hammer down the ideal usage of the Show typeclass, I'm happy to participate in that discussion too.

Michael