【问题标题】:Implementing takeTill1 in attoparsec在 attoparsec 中实现 takeTill1
【发布时间】:2014-03-27 00:16:45
【问题描述】:

Attoparsec 提供了函数takeWhile1 至少消耗一个字符。

但是,takeTill 没有模拟。 takeTill1这个功能怎么实现?

注意:这个问题故意显示没有研究工作,因为它是问答式回答的。 虽然这个问题与this previous one 类似,但答案并不相同。我认为缺少takeTill1 对初学者来说是一个潜在的障碍,因此这个问题值得单独回答。

【问题讨论】:

  • 致反对者:请评论您认为这个问题有什么问题。简单地拒绝它,没有解释,不会让任何事情变得更好。我假设你是连续否决我的帖子的人。如果您想改进某些东西,如果您留下评论而不是连续投票,我将不胜感激。

标签: haskell attoparsec


【解决方案1】:

您只需将谓词 takeWhile1 取反(如果您是初学者,请参阅 this blogpost 了解如何反转谓词):

takeTill1 :: (Char -> Bool) -> Parser ByteString
takeTill1 p = takeWhile1 (not . p)

另请参阅 this excellent answerskipWhile1 提供快速实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多