1

假设我有一个 attoparsec 解析器,x.

我正在寻找创建一个函数f :: Int -> Parser a -> Parser a,例如 if y = f n x,然后:

  • y如果失败则x失败
  • y如果x成功则失败并且x不消耗n字节
  • y否则成功

我该怎么做呢?

4

1 回答 1

5

您可以使用match来实现它:

f n x = do
    (bs, res) <- match x
    guard (BS.length bs >= n)
    return res

(<|>)在大量使用它之前,您应该检查它是否以可接受的方式与之交互。

于 2016-08-04T16:56:08.130 回答