[Haskell] Read Instances for Data.Map and Data.Set
Donald Bruce Stewart
dons at cse.unsw.edu.au
Sat Oct 22 01:21:08 EDT 2005
simonmar:
> On 21 October 2005 08:43, Johannes Waldmann wrote:
>
> > Georg made the point that if a type is an instance of Show,
> > then it should also be an instance of Read, and read . show == id
>
> I rather think that this should be an explicit design requirement for
> Read/Show instances in the libraries, along with the requirement that
> the Show instance outputs valid Haskell syntax that can be included in a
> program (assuming appropriate imports, and possibly an appropriate type
> signature). Show is not for pretty-printing, it is for serialising.
>
> Are there any Show instances that violate these requirements in the
> base/haskell98 packages currently?
The ones I can think of off the top of my head. Of course, these are
weird for various reasons though:
> show $ toDyn (1::Int) -- Dynamic has no Read
"<<Int>>"
> show $ typeOf (1::Int) -- TypeRep as no Read
"Int"
PackedString has no Read, but could have one. Due to Autrijus:
instance Read FastString where
readsPrec p str = [ (pack x, y) | (x, y) <- readsPrec p str ]
or some tricky packed version a la Binary and .hi files.
None of these is terribly troubling though, I think.
-- Don
More information about the Libraries
mailing list