
6 Nov
2007
6 Nov
'07
12:03 p.m.
On Tue, 2007-11-06 at 09:18 -0500, Graham Fawcett wrote:
Hi folks,
Is there a way to declare a 'toString' function, such that
toString x | <x is a String> = x toString x |
= show x Perhaps, in the type system, there's a way to declare a ToString class, and somehow "inherit" all instances of Show as ToString instances?
I think the simpler solution (for your particular problem) is to tag strings that should be printed as-is: newtype Literal = Literal String instance Show Literal where show (Literal x) = x lit :: String -> Literal lit = Literal I generally try to keep the law read . show == id Thus, for anything that needs to be printed in a nicer way I use something like this: class PPrint a where pretty :: a -> Doc