Я определили оператор XOR:Операторы старшинство и ассоциации
let (.||.) x y = (x || y) && not(x && y)
Такое, что
true .||. true
true .||. false
возвратившегося false
и true
соответственно.
Согласно Hansen & Rischel, оператор &&
имеет более высокий приоритет над ||
оператора (и оператора .||.
тоже. Поэтому, почему
true .||. true && false
true .||. false && true
действительно возвращают false
и true
соответственно? Результаты по-видимому, производится (true .||. true) && false
вместо ожидаемых true .||. (true && false)
.
См. Также http://stackoverflow.com/questions/7656054/how-to-do-boolean-exclusive-or (для [ИМО] лучше альтернативы '<> и соображений производительности). – CaringDev
Это перекрестье логических ворот каким-то образом решает глаза. Почему бы не 'let (^^) = function true -> not | _ -> id', даже если это не помогает с приоритетом? – kaefer
Спасибо, ребята, за ваши предложения! – Worice