理解`dropWhile`

时间:2014-09-14 16:36:35

标签: haskell

在示例中,我观察了dropWhile的行为:

*Main> dropWhile (/= 'X') "AXF"
"XF"

但是,我很困惑为什么"AX"没有返回:

*Main> dropWhile (== 'X') "AXF"
"AXF"

为什么"AXF"会在此测试中返回?

2 个答案:

答案 0 :(得分:13)

dropWhile在条件为真时丢弃元素,然后在条件为假时停止(返回其余元素)。

使用dropWhile (== 'X') "AXF"条件立即为假(因为'A' == 'X'为false),因此它不会丢弃任何内容并返回整个列表。

答案 1 :(得分:1)

表达式可以用英语解释为:

  

从左到右迭代并在字符等于'X'时从该字符串中删除字符。

此算法隐含的是函数返回字符串中的第一个字符,使谓词为false。