提问人:Daniel Philpott 提问时间:12/15/2017 更新时间:12/15/2017 访问量:178
Haskell:带有括号的运算符 (==) 的“foldl”混淆
Haskell: Confusion over 'foldl' with parenthesized operator (==)
问:
以下是将“foldl”应用于这个特定的相等运算符的一些结果。我不明白它们 - 我认为每一行都应该返回 true,因为“False == False == False ......”无论列表的长度如何,都是 true。我对 Haskell 很陌生。
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
我在尝试编写一个函数时发现了这些结果,该函数测试函数列表在应用于公共参数(返回布尔值)时是否给出相同的结果。
答:
4赞
Daniel Philpott
12/15/2017
#1
== 是二进制运算符。当你写 False == False == False 时,你实际上是在写 (False == False) == False,即 True == False。也许现在你可以理解发生了什么。
'Alexis King'在评论中提交的答案
下一个:Haskell 矩阵相等失败
评论
==
是一个二进制运算符。当你写作的时候,你真的在写作,这是。也许现在你可以理解发生了什么。False == False == False
(False == False) == False
True == False
False == False == ... == False
(False == False) and (False == False) and ... and (False == False)
False
all (==False) [False, False,False]