Haskell 哈斯克尔:关于'的困惑;foldl';带括号的运算符(=)
下面是将“foldl”应用于此特定等式运算符的一些结果。我不理解它们——我认为每一行都应该返回true,因为“False==False==False…”不管列表的长度如何都是true。我对哈斯克尔是个新手Haskell 哈斯克尔:关于'的困惑;foldl';带括号的运算符(=),haskell,equality,fold,Haskell,Equality,Fold,下面是将“foldl”应用于此特定等式运算符的一些结果。我不理解它们——我认为每一行都应该返回true,因为“False==False==False…”不管列表的长度如何都是true。我对哈斯克尔是个新手 Prelude> foldl (==) False [False] True Prelude> foldl (==) False [False,False,False] True Prelude> foldl (==) False [False,False,False,Fal
Prelude> foldl (==) False [False]
True
Prelude> foldl (==) False [False,False,False]
True
Prelude> foldl (==) False [False,False,False,False]
False
Prelude> foldl (==) False [False,False,False,False,False]
True
Prelude> foldl (==) False [False,False,False,False,False,False]
False
我在尝试编写一个函数时发现了这些结果,该函数测试应用于公共参数(返回布尔值)时函数列表是否给出相同的结果。==是一个二进制运算符。当你写False==False==False时,你实际上是在写(False==False)==False,这就是True==False。也许现在你能明白发生了什么
“Alexis King”在评论中提交的答案是一个二进制运算符。当您编写
False==False==False
时,您实际上是在编写(False==False)==False
,即True==False
。也许现在你能明白发生了什么。当然!非常感谢。如果您熟悉Python,您可能会将其与Python的比较链接混淆,其中False==False==…==False实际上相当于(False==False)和(False==False)以及。。。和(False==False)
。是,我误解了fold函数的括号。FYI,要检查所有元素是否都是False
,请使用all(=False)[False,False,False]
。