F# 运算符优先级和关联

F# 运算符优先级和关联,f#,operators,F#,Operators,我定义了一个XOR运算符: let (.||.) x y = (x || y) && not(x && y) 以致 true .||. true true .||. false 分别返回false和true 根据,&运算符的优先级高于|运算符(以及| |.运算符)。因此,为什么 true .||. true && false true .||. false && true 是否分别返回false和true?结果

我定义了一个XOR运算符:

let (.||.) x y = (x || y) && not(x && y)
以致

true .||. true
true .||. false
分别返回
false
true

根据,
&
运算符的优先级高于
|
运算符(以及
| |.
运算符)。因此,为什么

    true .||. true && false
    true .||. false && true
是否分别返回
false
true
?结果似乎由
(true.| | | true)和&false
而不是预期的
true.| | |(true和false)
根据,操作符
|
将属于模式
| op
(即忽略前导点,从管道开始),这是表中操作员
&
下面的两行,与
&op
相关的同一行:(对于[IMO]更好的替代方案
和性能考虑)。逻辑门的交叉布线不知何故会刺痛眼睛。为什么不
让(^^^)=function true->not | u->id
,即使它对优先级没有帮助?谢谢大家的建议!谢谢回答。我引用这项运动的话“系统根据运算符的字符确定声明运算符的优先级和关联。对于.| |的情况,句点对此没有影响,因此.| |的优先级和关联与| |相同。"第35页。我认为这是一个错误吗?不,绝对正确:<代码> > < >代码>与代码> > <代码>。这本书给了你正确的信息。不正确的是你假设“代码”>>< /代码>的优先级与<代码> > <代码>的优先级相同,因此低于&&
。明白了。我天真地误解了标点符号。谢谢你的耐心。