I know we have
class IsString a where
fromString :: String -> a
But do we have an inverse generic function
toString defined anywhere?
IsString implies that the type
`a` is a subset of
String; if all we have is
fromString, then
IsString defines
supersets of String. To me, the most logical thing would be that
IsString defines bijections to String (i.e. things that are subsets
and supersets).
The reason this came up is that I'm getting pretty sick of type-juggling different string types from different libraries (
String, Text, various
ByteStrings), especially since I have to tweak all the functions I use if a type changes; discovering
fromString was fantastic, but without
toString, I can't define something like
reString :: (IsString a, IsString b) => a -> b only accepts one kind of string, and you have several distinct ones floating around.