Мне удалось использовать Parsec для анализа строки, но я не могу сделать то же самое с ByteString.
Как заставить Parsec работать с ByteStrings без их ручного преобразования в строки?
У меня такое ощущение, что это не сложно сделать. Я ошибся? (Я новичок в Хаскеле. ^^)
Спасибо!
Просто импортируйте тип Parser из Text.Parsec.ByteString или Text.Parsec.ByteString.Lazy вместо Text.Parsec.String.
Parser
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
Cheers
edit: Parsec, который STH предлагает (Text.Parsec.ByteString),фактически версия 3.0, предыдущая версия 2.xx расположена в Text.ParserCombinators.Parsec.
import Text.Parsec.ByteString ()
даст вам экземпляр
forall m. Stream ByteString m Char
следовательно, если вы используете, вместо Parser a:
Parser a
p :: Stream s m Char => ParsecT s u m a