Haskell語言學習筆記(49)ByteString Text
阿新 • • 發佈:2017-11-23
同義詞 replace 文本文件 惰性 code nic 文本文 字符串 存在
Data.ByteString
String 是 [Char] 的同義詞,在使用上存在List的惰性所帶來的性能問題。
在處理大型二進制文件時,可以使用 ByteString 來代替 String。
ByteString 包含 Lazy 模塊 Data.ByteString.Lazy 和 Strict 模塊 Data.ByteString。
其中 Lazy 模塊內部使用 chunks(64K數據塊)。
Prelude> import qualified Data.ByteString.Lazy as B Prelude B> import qualified Data.ByteString as S Prelude 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 和 Strict 模塊 Data.Text。
其中 Lazy 模塊內部使用 chunks。
Prelude> import qualified Data.Text.Lazy as T Prelude T> :t T.pack "abc" T.pack "abc" :: T.Text Prelude 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"]
Haskell語言學習筆記(49)ByteString Text