这一个是相当简单的,但我还没有找到一个令人满意的答案在其他地方。 这是关于一个严格的操作符还是非严格的操作符,在这种情况下是一个简单的OR操作符。非严格与严格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
除非我错过了一些很大的东西,'or''似乎并不像一个OR,它具有AND的行为。尽管严格和非严格OR的评估风格不同,但真值表语义(假设两个参数都是有效的布尔值)应该是相同的。 –
是的,这也是我收集的,因此我说我的逻辑中有一些错误。 – dschib