Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
This module implements type class which allow to have conversion to and
from Text
, String
and ByteString
types (including both strict and lazy
versions). Usually you need to export Text
modules qualified and use
pack
/ unpack
functions to convert to/from Text
. Now you can
just use toText
/ toString
functions.
- type LText = Text
- type LByteString = ByteString
- class ConvertUtf8 a b where
- class ToString a where
- class ToLText a where
- class ToText a where
- readEither :: (ToString a, Read b) => a -> Either Text b
- show :: forall b a. (Show a, IsString b) => a -> b
Convenient type aliases
type LByteString = ByteString Source #
Type synonym for ByteString
.
Conversion type classes
class ConvertUtf8 a b where Source #
Type class for conversion to utf8 representation of text.
encodeUtf8 :: a -> b Source #
Encode as utf8 string (usually ByteString
).
>>>
encodeUtf8 @Text @ByteString "патак"
"\208\191\208\176\209\130\208\176\208\186"
decodeUtf8 :: b -> a Source #
Decode from utf8 string.
>>>
decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"
"\1087\1072\1090\1072\1082">>>
putStrLn $ decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"
патак
decodeUtf8Strict :: b -> Either UnicodeException a Source #
Decode as utf8 string but returning execption if byte sequence is malformed.
>>>
decodeUtf8 @Text @ByteString "\208\208\176\209\130\208\176\208\186"
"\65533\65533\1090\1072\1082"
>>>
decodeUtf8Strict @Text @ByteString "\208\208\176\209\130\208\176\208\186"
Left Cannot decode byte '\xd0': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream
Type class for converting other strings to Text
.
Show and read functions
readEither :: (ToString a, Read b) => a -> Either Text b Source #
Polymorhpic version of readEither
.
>>>
readEither @Text @Int "123"
Right 123>>>
readEither @Text @Int "aa"
Left "Prelude.read: no parse"