非严格与严格的OR运算符

时间:2013-12-15 15:18:01

标签: haskell boolean evaluation strict or-operator

这个很简单,但我在其他地方找不到满意的答案。 它是关于严格的与非严格的运算符,在这种情况下是一个简单的OR。

我是否理解正确使用严格的运算符,您总是必须查看两个布尔值中的第二个,如下所示:

strict_or False True = True strict_or True False = True 等等?

non_strict运算符怎么样,总是只查看第一个值,还是需要2个True值才能返回True?

即。 or True False = Trueor 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

1 个答案:

答案 0 :(得分:1)

非严格函数仅在需要时才评估操作数。因此,如果发现第一个操作数为真,则非严格OR不会计算第二个操作数IF。 (因为无论第二个操作数是什么,结果都是真的。)