我已经设法使用 Parsec 来解析字符串,但无法对 ByteString 做同样的事情。
如何在不手动将它们转换为字符串的情况下使 Parsec 与 ByteStrings 一起使用?
我觉得这并不难实现。我错了吗?(我是 Haskell 的新手。^^)
谢谢!
我已经设法使用 Parsec 来解析字符串,但无法对 ByteString 做同样的事情。
如何在不手动将它们转换为字符串的情况下使 Parsec 与 ByteStrings 一起使用?
我觉得这并不难实现。我错了吗?(我是 Haskell 的新手。^^)
谢谢!
只需从or导入Parser
类型,而不是 from 。Text.Parsec.ByteString
Text.Parsec.ByteString.Lazy
Text.Parsec.String
答案实际上取决于您使用的 Parsec 版本。如果您使用的是 3.0 或更高版本,则可以。对于 2.xx 版,我认为你不能。
http://hackage.haskell.org/packages/archive/parsec/3.0.1/doc/html/Text-Parsec-ByteString.html
干杯
编辑:STH 建议的 Parsec (Text.Parsec.ByteString) 实际上是 3.0 版,之前的 2.xx 版位于 Text.ParserCombinators.Parsec。
import Text.Parsec.ByteString ()
会给你实例
forall m. Stream ByteString m Char
因此,如果您使用,而不是Parser a
:
p :: Stream s m Char => ParsecT s u m a