首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >那Data.Attoparsec.ByteString.Lazy.Char8呢?

那Data.Attoparsec.ByteString.Lazy.Char8呢?
EN

Stack Overflow用户
提问于 2014-12-02 04:18:00
回答 1查看 257关注 0票数 1

Attoparsec有专门用于严格/惰性、字节串/文本、Char8 (ascii)/Char的模块。但它并不具备所有的组合。

我认为没有提供的Data.Attoparsec.ByteString.Lazy.Char8对于处理倾向于编码为ascii的大型报告会特别方便。

你知道为什么它不存在吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-26 06:21:01

我不认为这是必要的,因为这两个模块看起来并不相互重叠。

Data.Attoparsec.ByteString.Char8提供了专门用于解析ASCII码数据的额外解析器。这些只是它们对应的Word8的变体,它们使用相同的底层monad,因此您应该能够毫无问题地混合和匹配。

Data.Attoparsec.ByteString.Lazy提供了一个替代的parse函数,您可以使用该函数对惰性字节串运行解析器。这没有任何特殊之处,它只是严格版本的包装器,迭代地将惰性ByteString块推送到解析器中。

据我所知,你没有理由不能同时使用它们。例如:

代码语言:javascript
复制
import Data.ByteString.Lazy
import qualified Data.Attoparsec.ByteString.Char8 as Char8
import qualified Data.Attoparsec.ByteString.Lazy as Lazy

myParser :: Char8.Parser T
myParser = -- use parsers from Char8 if you'd like

lazyParse :: Char8.Parser T -> ByteString -> Lazy.Result T
lazyParse p s = Lazy.parse p s -- parse a lazy ByteString

使用Char8中的组合符来定义解析器,然后使用Lazy中的函数来运行解析器。所以不需要Data.Attoparsec.ByteString.Lazy.Char8

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27236539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档