Я пытаюсь разобрать два целых числа из 3 символов, используя attoparsec. Пример ввода может выглядеть примерно так:
341
... который я хотел бы разобрать на:
Constructor 34 1
У меня есть два решения, которые работают, но несколько неуклюжи:
stdK :: P.Parser Packet
stdK = do
P.char '1'
qstr <- P.take 2
let q = rExt $ P.parseOnly P.decimal qstr
n <- P.decimal
return $ Std q n
stdK2 :: P.Parser Packet
stdK2 = do
P.char '1'
qn <- P.decimal
let q = div qn 10
let n = rem qn 10
return $ Std q n
Должен быть лучший способ добиться чего-то столь же простого, как это. Я что-то упускаю?
char '1'
в начале обоих парсеров? Это не проанализирует ваш образец ввода"341"
. - person Dogbert   schedule 08.06.2015