Haskell 在ATOPASSERC中实现skipWhile1

Haskell 在ATOPASSERC中实现skipWhile1,haskell,attoparsec,Haskell,Attoparsec,提供至少使用一个字符的函数takeWhile1 但是,skipWhile没有模拟。如何实现此功能skipWhile1 注意:此问题故意不显示任何研究成果,因为它是问答式回答。您可以与takeWhile1一起使用,以忽略结果: import Data.c.Char8 进口管制.单子(无效) skipWhile1::(Char->Bool)->解析器() skipWhile1=无效。takeWhile1 另一种可能的实现方式: import Control.Applicative skipWhil

提供至少使用一个字符的函数
takeWhile1

但是,
skipWhile
没有模拟。如何实现此功能
skipWhile1

注意:此问题故意不显示任何研究成果,因为它是问答式回答。

您可以与
takeWhile1一起使用,以忽略结果:

import Data.c.Char8
进口管制.单子(无效)
skipWhile1::(Char->Bool)->解析器()
skipWhile1=无效。takeWhile1

另一种可能的实现方式:

import Control.Applicative

skipWhile1 p = skip p *> skipWhile p
这实际上可能比@Uli的答案快,因为
takeWhile
构建结果字符串,而
skipWhile
不构建结果字符串。懒惰可能使它们相等(例如,如果不使用字符串,则可能
takeWhile
实际上不会构建字符串);我现在无法测试来验证这一点