[Haskell-cafe] type/class question: toString
Thomas Schilling
nominolo at googlemail.com
Tue Nov 6 12:03:10 EST 2007
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 | <x's type is an instance of Show> = 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
More information about the Haskell-Cafe
mailing list