module Data.StringClass
( StringClass(..)
, convertString )
where
import qualified Data.ByteString.Char8 as BS (ByteString, pack, unpack, concat)
import qualified Data.ByteString.Lazy.Char8 as BL (ByteString, pack, unpack, toChunks, fromChunks)
class StringClass a where
toString :: a -> String
fromString :: String -> a
instance StringClass String where
toString = id
fromString = id
instance StringClass BS.ByteString where
toString = BS.unpack
fromString = BS.pack
instance StringClass BL.ByteString where
toString = BL.unpack
fromString = BL.pack
convertString :: (StringClass a, StringClass b) => a -> b
convertString = fromString . toString
convertString :: (StringClass a, StringClass b) => a -> b
convertString = fromString . toString
convertString :: (StringClass a, StringClass b) => a -> b
convertString = fromString . toString
import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy.Char8 as BL
class StringClass a where
toString :: a -> String
fromString :: String -> a
instance StringClass String where
toString = id
fromString = id
instance StringClass BS.ByteString where
toString = BS.unpack
fromString = BS.pack
instance StringClass BL.ByteString where
toString = BL.unpack
fromString = BL.pack
convertString :: (StringClass a, StringClass b) => a -> b
convertString x = fromString (toString x)
main = do
print $ BL.null $ convertString $ BS.singleton '0'
print $ BS.null $ convertString $ BL.singleton '1'
print $ BS.null $ convertString $ BS.singleton '2'
print $ BL.null $ convertString $ BL.singleton '3'