Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 哈斯克尔:关于'的困惑;foldl';带括号的运算符(=)_Haskell_Equality_Fold - Fatal编程技术网

Haskell 哈斯克尔:关于'的困惑;foldl';带括号的运算符(=)

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

下面是将“foldl”应用于此特定等式运算符的一些结果。我不理解它们——我认为每一行都应该返回true,因为“False==False==False…”不管列表的长度如何都是true。我对哈斯克尔是个新手

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]