再次在 F# 中自定义前缀运算符

Custom prefix operators in F# once again

无论我读了多少遍post:F#: What are the valid prefix operators?

我和 F# 编译器从未就什么是自定义前缀(或中缀)运算符名称达成一致。

上面post说“+”既可以是中缀运算符也可以是前缀运算符,但是这个:

let (+@) a = a + 20
+@ 30 |> printfn "%d"

给出错误 "Invalid prefix operator"。

为什么?

如果您查看 Brian 在您提供的 link 中的回答,您会发现运算符 +@ 未列在 prefix-op 中。并且要用作 prefix 运算符,运算符 + 应该以 ~:

作为前缀
let (~+) a = a + 20
+ 30 |> printfn "%d"

结果:

50