目前我正在使用
takeWhile (\x -> x /= 1 && x /= 89) l
以便从列表中获取最多1或89的元素。但是,结果不包括这些标记值。 Haskell是否具有标准功能,可在
takeWhile
上提供此变体,从而在结果中包含前哨?到目前为止,我对Hoogle的搜索仍然没有结果。 最佳答案
由于您在询问标准函数,所以是no。但是也没有包含takeWhileInclusive
的包,但这确实很简单:
takeWhileInclusive :: (a -> Bool) -> [a] -> [a]
takeWhileInclusive _ [] = []
takeWhileInclusive p (x:xs) = x : if p x then takeWhileInclusive p xs
else []
您唯一需要做的就是获取该值,而不管谓词是否返回True,并且仅将谓词用作延续因子:
*Main> takeWhileInclusive (\x -> x /= 20) [10..]
[10,11,12,13,14,15,16,17,18,19,20]
关于haskell - Haskell是否具有takeUntil函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22472536/