2014-03-24 16 views

回答

3

另一种可能的实现:

import Control.Applicative 

skipWhile1 p = skip p *> skipWhile p 

这实际上可能比@快乌利的答案,因为takeWhile构建一个结果字符串,而skipWhile没有。懒惰可能会使它们等价(也就是说,如果不使用它,也许takeWhile实际上并不构建该字符串);目前我无法测试以验证这一点。

2

您可以使用Control.Monad.voidtakeWhile1一起简单地忽略结果:

import Data.Attoparsec.Char8 
import Control.Monad (void) 

skipWhile1 :: (Char -> Bool) -> Parser() 
skipWhile1 = void . takeWhile1