Haskell语言学习笔记(49)ByteString Text
来源:互联网 发布:项目管理就业前景知乎 编辑:程序博客网 时间:2024/06/04 00:57
Data.ByteString
String 是 [Char] 的同义词,在使用上存在List的惰性所带来的性能问题。
在处理大型二进制文件时,可以使用 ByteString 来代替 String。
ByteString 类型分为以下两种:
* Lazy 模块 Data.ByteString.Lazy 中的 Data.ByteString.Lazy.ByteString
Lazy 模块内部使用 chunks(64K数据块)。
* Strict 模块 Data.ByteString 中的 Data.ByteString.ByteString
Prelude> import qualified Data.ByteString.Lazy as BPrelude B> import qualified Data.ByteString as SPrelude B S> B.pack [99,97,110]"can"Prelude B S> B.fromChunks [S.pack [40,41,42], S.pack [43,44,45], S.pack [46,47,48]]"()*+,-./0"Prelude B S> B.cons 85 $ B.pack [80,81,82,84]"UPQRT"Prelude B S> foldr B.cons' B.empty [50..60] "23456789:;<"
Data.Text
在处理大型文本文件时,可以使用 Text 来代替 String。
Text 是一个 Unicode 友好的字符串类型。
Text 类型分为以下两种:
* Lazy 模块 Data.Text.Lazy 中的 Data.Text.Lazy.Text
Lazy 模块内部使用 chunks。
* Strict 模块 Data.Text 中的 Data.Text.Text
Prelude> import qualified Data.Text.Lazy as TPrelude T> :t T.pack "abc"T.pack "abc" :: T.TextPrelude T> T.replace (T.pack "a") (T.pack "b") (T.pack "aXaXaX")"bXbXbX"Prelude T> T.splitOn (T.pack "a") (T.pack "aXaXaX")["","X","X","X"]
- pack :: String -> Text
pack 函数将 String 转换成 Text。
Data.Text.Encoding
Encoding 模块用于 ByteString 和 Text 之间类型转换。
Text 包含 Lazy 模块 Data.Text.Encoding.Lazy 和 Strict 模块 Data.Text.Encoding。
其中 Lazy 模块提供 Data.ByteString.Lazy.ByteString 和 Data.Text.Lazy.Text 之间的类型转换功能。
而 Strict 模块则提供 Data.ByteString.ByteString 和 Data.Text.Text 之间的类型转换功能。
Data.String.Conversions
$ cabal install string-conversionsInstalled string-conversions-0.4.0.1Prelude> :m +Data.String.ConversionsPrelude Data.String.Conversions>
Conversions 模块提供以下五种类型之间的类型转换功能。
* String
* Data.ByteString.ByteString
缩写为 StrictByteString 或 SBS
* Data.ByteString.Lazy.ByteString
缩写为 LazyByteString 或 LBS
* Data.Text.Text
缩写为 StrictText 或 ST
* Data.Text.Lazy.Text
缩写为 LazyText 或 LT
Prelude Data.String.Conversions> cs "abc" :: ST"abc"
- ConvertibleStrings
ConvertibleStrings 是个类型类,五种字符串类型都被定义成了 ConvertibleStrings 类型类的实例。 - cs :: ConvertibleStrings a b => a -> b
cs 函数根据输入输出类型自动实施五种字符串类型之间的类型转换功能。
- Haskell语言学习笔记(49)ByteString Text
- Haskell语言学习笔记(1)
- Haskell语言学习笔记(2)
- Haskell语言学习笔记(4)Functor
- Haskell语言学习笔记(5)Applicative
- Haskell语言学习笔记(6)Monad
- Haskell语言学习笔记(8)Monoid
- Haskell语言学习笔记(14)Foldable
- Haskell语言学习笔记(16)Alternative
- Haskell语言学习笔记(17)MonadPlus
- Haskell语言学习笔记(18)Traversable
- Haskell语言学习笔记(21)Array
- Haskell语言学习笔记(22)MaybeT
- Haskell语言学习笔记(29)CPS
- Haskell语言学习笔记(31)ListT
- Haskell语言学习笔记(35)Contravariant
- Haskell语言学习笔记(39)Category
- Haskell语言学习笔记(42)Bifunctor
- Haskell语言学习笔记(48)Data.Tuple
- HTML+CSS的练习之网上书城主页面的实现
- SpringCloud教程七:高可用的分布式配置中心(SpringCloud Config)
- Ubuntu16.04+anaconda2+caffe+ssd+opencv3.1.0在编译caffe过程中的问题及解决方法 主要遇到三个问题,前两个是caffe在cmake过程中的问题,后一
- AVL树 封装左旋 右旋操作
- Haskell语言学习笔记(49)ByteString Text
- [构造] BZOJ5100 [POI2018]. Plan metra
- SQl学习(3)
- Haskell语言学习笔记(50)Extra
- 7.2 用全局变量编程模拟显示一个数字时钟
- auc计算 代码
- 版本控制之Git---Git Flow模型
- IEC/PAS 62612
- Haskell语言学习笔记(51)Comonad