Jeff Heard proclaimed:<br>&gt; There are multiple distinct reasons people use Show, and this gets confusing.<br><br>This is exactly what I was getting at.&nbsp; I see four uses being discussed:<br><br>1) Programmer readable / compiler parsable.<br>

<br>For this we have &#39;Show&#39; and &#39;Read&#39;, but the community has a lack of conformance on proper use of these classes.<br><br>Suggestion 1: Have &quot;a == (read . show) a&quot; as a mandatory QC test for all exported data structures that have Read and Show instances within the Haskell Platform packages.<br>

<br>2) Human readable format (&#39;pretty&#39;).<br><br>The &#39;Pretty&#39;
type class is hidden in Test.PrettyPrint.HughesPJClass - much as I admire the giants
of FP I feel we shouldn&#39;t encode peoples names in modules.&nbsp; The whole &#39;Pretty&#39; module heirarchy seems backward to me, the guts are on the bottom (Text.PrettyPrint) and the high level API is hidden.<br><br>Suggestion 2: Alter the Pretty packages just a little, combine them, and encourage people to use it.<br>


<br>
3) &quot;Network ready&quot; string packing as mentioned by Donn Cave.<br><br>This one surprised me as I hadn&#39;t thought of a function termed &#39;str&#39; or &#39;show&#39; being used for binary encoding.&nbsp; Obviously, we have Binary for just this.<br>

<br>4) Casts comment:<br>&gt; A parser function applied to a Haskell string representation of the second form --- still (somewhat) readable, but also acceptable to ghci as input.<br><br>This odd middle ground is the only place I see package specific &#39;show*&#39; functions as appropriate.&nbsp; OTOH, if its still valid Haskell I don&#39;t see why this still can&#39;t be the Show type class, but the derivation will have to be done manually or with a patched compiler.<br>

<br>forall m. (Mind m, View m ~ Maybe (Email Substance)) =&gt; Email a -&gt; m -&gt; View m<br>(peoples views may vary and better be deterministic)<br><br>Cheers,<br>
Tom<br>