Это довольно просто, но я не нашел удовлетворительного ответа нигде. Речь идет о строгом соответствии с нестрогим оператором, в данном случае простым OR.Нестрогий против строгого OR-оператора
ли я правильно понял, что со строгим оператором, вы всегда должны смотреть на второй из двух логических значений, например:
strict_or False True = True
strict_or True False = True
и так далее?
Как насчет оператора non_strict, делает это всегда Посмотрите только на первое значение или требуется 2 True значения для возврата True?
i.e. or True False = True
vs. 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, это имеет поведение И. В то время как стиль оценки отличается от строгого и нестрого ИЛИ, семантика таблицы истинности (при условии, что оба аргумента являются допустимыми булевыми) должны быть одинаковыми. –
Да, это то, что я собрал, поэтому я сказал, что у меня есть некоторые ошибки в моей логике. – dschib