module Text.NaturalComp.Stringy (Stringy (..)) where
import qualified Data.ByteString.UTF8 as U
import qualified Data.ByteString.Lazy.UTF8 as UL
import qualified Data.Text as T
import qualified Data.Text.Lazy as TL
class Stringy s where
uncons :: s -> Maybe (Char, s)
toString :: s -> String
instance Stringy [Char] where
uncons [] = Nothing
uncons (x:xs) = Just (x, xs)
toString = id
instance Stringy U.ByteString where
uncons = U.uncons
toString = U.toString
instance Stringy UL.ByteString where
uncons = UL.uncons
toString = UL.toString
instance Stringy T.Text where
uncons = T.uncons
toString = T.unpack
instance Stringy TL.Text where
uncons = TL.uncons
toString = TL.unpack