1
Скажем, у меня есть парсер attoparsec, x
.Преобразовать парсер attoparsec в парсер, который терпит неудачу, если количество байтов, которое он потребляет, не имеет определенной длины
Ищу создать функцию f :: Int -> Parser a -> Parser a
, такой, что если y = f n x
, то:
y
терпит неудачу, еслиx
не удаетсяy
терпит неудачу, еслиx
успешно иx
не потребляетn
байтy
не соответствует действительности
Как мне это сделать?
В 'binary' эта функция упакована как' isolate'. Возможно, это более разумно, так как «бинарный» отслеживает количество потребляемых байтов, но он поражает меня как хорошее дополнение к API attoparsec (в терминах токенов, а не байтов, поэтому Text не будет считать байты, например). –