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