MicroHs-0.10.3.0: lib/Data/Text.hs
module Data.Text(
Text,
pack, unpack,
empty,
append,
head,
) where
import Prelude(); import MiniPrelude hiding(head)
import Data.Monoid.Internal
import Data.String
import qualified Data.ByteString.Internal as BS
newtype Text = T BS.ByteString
instance Eq Text where
(==) = cmp (==)
(/=) = cmp (/=)
instance Ord Text where
(<) = cmp (<)
(<=) = cmp (<=)
(>) = cmp (>)
(>=) = cmp (>=)
cmp :: (BS.ByteString -> BS.ByteString -> Bool) -> (Text -> Text -> Bool)
cmp op (T x) (T y) = op x y
instance Show Text where
showsPrec p = showsPrec p . unpack
instance IsString Text where
fromString = pack
instance Semigroup Text where
(<>) = append
instance Monoid Text where
mempty = empty
empty :: Text
empty = pack []
pack :: String -> Text
pack s = T (primitive "toUTF8" s)
unpack :: Text -> String
unpack (T t) = primitive "fromUTF8" t
append :: Text -> Text -> Text
append (T x) (T y) = T (BS.append x y)
head :: Text -> Char
head (T t) = primitive "headUTF8" t