op_Quotation如果不能用有什么意义?

What is the point of op_Quotation if it cannot be used?

根据 operator overloading

的 F# 规范
<@ @>   op_Quotation
<@@ @@> op_QuotationUntyped

与许多其他运算符一样给出。除非我遗漏了什么我不相信我可以将它用于自定义类型,那么为什么列出它?

我认为您是对的,没有办法将它们实际用作自定义运算符。我怀疑这些被视为运算符,以防在语言的未来某个时候对于某些聪明的新功能有用。

文档实际上只是解释了运算符的名称是如何编码的。对于非特殊运算符名称,F# 以系统的方式对其进行编码。对于页面中列出的那些,它有一个特别好听的名字。考虑这种类型:

type X() = 
  static member (<^><>) (a:int,b:int) = a + b
  static member (<@ @>) (a:int,b:int) = a + b

如果您查看这些成员的姓名:

[ for m in typeof<X>.GetMembers() -> m.Name ]

您看到第一个运算符被编译为 op_LessHatGreaterLessGreater,而第二个运算符被编译为 op_Quotation。所以这就是 table 中提及的名称的用武之地 - 在某处记录它可能很好,但我认为你是对的,这并不是特别有用!