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

blf*_*tes 3 f# new-operator

有没有办法可以明确定义我定义的新运算符的元素?

我检查了文档但找不到它: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

Run Code Online (Sandbox Code Playgroud)

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

let (@^) (a: bool, b:bool) : bool =
    a <> b
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Car*_*Dev 7

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

let (@^) (a: bool) (b: bool) : bool =
    a <> b
Run Code Online (Sandbox Code Playgroud)

然后

true @^ false // true
Run Code Online (Sandbox Code Playgroud)