module Data.String.Stringable (Stringable(..)) where
import Data.String
import qualified Data.ByteString.Char8 as B
import qualified Data.DString as DS
import qualified Data.Text as T
import qualified Text.PrettyPrint as PP
class IsString s => Stringable s where
toString :: s -> String
instance Stringable String where
toString = id
instance Stringable B.ByteString where
toString = B.unpack
instance Stringable PP.Doc where
toString = PP.render
instance Stringable ShowS where
toString s = s []
instance Stringable DS.DString where
toString = DS.toString
instance Stringable T.Text where
toString = T.unpack
instance IsString ShowS where
fromString = showString
instance IsString PP.Doc where
fromString = PP.text