这个很简单,但我在其他地方找不到满意的答案。 它是关于严格的与非严格的运算符,在这种情况下是一个简单的OR。
我是否理解正确使用严格的运算符,您总是必须查看两个布尔值中的第二个,如下所示:
strict_or False True = True
strict_or True False = True
等等?
non_strict运算符怎么样,总是只查看第一个值,还是需要2个True值才能返回True?
即。 or True False = True
与or True False = False
?
现在的样子,我的代码中仍然存在一些逻辑错误:
or' :: (Bool,Bool) -> Bool
or' (True, True) = True
or' (True, False) = False
or' (False, _) = False
strict_or :: (Bool, Bool) -> Bool
strict_or (True,True) = True
strict_or (False, True) = True
strict_or (False, False) = False
strict_or (True, False) = True
答案 0 :(得分:1)
非严格函数仅在需要时才评估操作数。因此,如果发现第一个操作数为真,则非严格OR不会计算第二个操作数IF。 (因为无论第二个操作数是什么,结果都是真的。)