Lambda 函数如何在 Haskell 中的列表上工作?

Thm*_*ode 1 lambda haskell

我有这行代码,但不太明白为什么结果是[False, False]

i :: [Bool]
i = filter (\x-> (not x)) [False,False,True,True,True] 
Run Code Online (Sandbox Code Playgroud)

我以为它会出来[True,True,True]

非常感谢这里对结果的简短解释。提前致谢

And*_*kin 6

根据文档

filter应用于谓词和列表,返回满足谓词的元素的列表,即 [...]:

>>> filter odd [1, 2, 3]
[1,3]
Run Code Online (Sandbox Code Playgroud)

定义的表达式i本质上是说:

过滤列表中的x布尔值not xTrue[False, False, True, True, True]

  • 对于第一个条目,not FalseTrue,因此保留它。
  • 对于第二个条目,not False再次是True,因此也保留了该条目。
  • 对于其余三个条目,not TrueFalse,因此这些条目将被删除。

结果是[False, False]