Haskell运算符解释

Wal*_*rty 1 syntax haskell

我在Haskell中遇到过以下内容:foldl (&&) True [False | _ <- [1..]].我知道foldl函数做了什么,这个表达式涉及无限递归,但这个表达式实际意味着什么?我主要不确定在这种情况下做什么|<-做什么.

che*_*ner 5

这是foldl应用于三个参数的函数:

  1. (&&)
  2. True
  3. [False | _ <- [1..]]

第三个参数是由列表推导定义的列表.它只是一个无限的False值序列:列表是使用从无限序列1,2,3 ...... False_拉出的每个值构建的.它可以更简单地定义为repeat False:

foldl (&&) True (repeat False) 
Run Code Online (Sandbox Code Playgroud)