使用显式数据类型在 F# 中创建新运算符

Create new operator in F# with explicit datatype

有没有一种方法可以显式定义我定义的新运算符的元素?

我查看了文档但找不到: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/operator-overloading#creating-new-operators

假设我定义了以下 xor 运算符:

let (^@) a b =
    a <> b

let result = true ^@ false

它工作正常,但下面的定义不...

let (@^) (a: bool, b:bool) : bool =
    a <> b

@^中参数是元组的。您的操作员需要两个参数。如果您指定

let (@^) (a: bool) (b: bool) : bool =
    a <> b

然后

true @^ false // true