
On Mon, 11 Aug 2003, Tomasz Zielonka wrote:
The Tree datatype in new Data.Tree module has a Show instance ...
I agree that Read/Show should normally come as a pair. It is debatable whether a library should contain a Show instance that makes it rather impossible to write the corresponding Read instance. Even more so since no library user can later change this: by the Haskell definition, if you import a module that contains a data type definition, then you also inherit all its instances from that module. (Section 5.4 of the report, http://haskell.org/onlinereport/modules.html) the workaround would be to move the `instance Show Tree' into a separate library module. On the other hand, it is my opinion that for a clean program design, you should normally define your own `data' (or `newtype') types, rather than use exisiting ones by `type' synonyms. this may lead to somewhat larger program texts, but you'll find that they are more readable, and extendable. (Compare adding another component to a tuple, and to a record). this also gives you the opportunity to define class instances in any way you want. best regards, -- -- Johannes Waldmann ---- http://www.informatik.uni-leipzig.de/~joe/ -- -- joe@informatik.uni-leipzig.de -- phone/fax (+49) 341 9732 204/209 --