removing ad hoc Show instances?

Alexander Bernauer bernauer at
Wed Sep 26 09:31:03 BST 2012

Hi Mark,

On Tue, Sep 25, 2012 at 05:02:08PM -0700, Mark Tullsen wrote:
>     (I'll forgo an excursus on the significant advantages of this and
>     my diatribe against ad hoc Show instances.)

Sorry if this is obvious, but I am really interested in learning about
these advantages. Also, I have heard different opinions on for which
purposes Show should be used.

We once had a discussion on this list, that the Show instances of all
AST nodes should be canonical, such that they can be parsed by the
Haskell parser (see discussion starting from [1]). Unfortunatelly,
nobody took the time to acutally do this. But I am still
convinced that this is a good idea.

And AFAICS this goes hand in hand with what you are suggesting.
However, the Haskell report does not enforce that automatically derived
Show instances produce parsable strings: "Strings produced by showsPrec
are usually readable by readsPrec [2]". Any wisdom or experience here? I
would just give it a try.

If we agree on what we want I would volunteer to finally provide the
proper patch.

We have ad-hoc Show instances in the following modules:
 - Data.Ident
 - Data.Error
 - Data.Position
 - Data.Node
 - Syntax.Constants (<- concerns [1])
 - Analysis.DefTable
 - Analysis.SemRep
 - Analysis.SemError
 - Parser.Tokens
 - Parser.ParserMonad

To which instances are you referring to?




[2] (6.3.3)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <>

More information about the Language-c mailing list