在F#中,许多中缀运算符可以成为前缀运算符:
a + b
(+) 1 a b
但是,对于向上(或向下(运算符,这似乎是不允许的。
x
是一个继承自Principal
的UserPrincipal
x :> Principal
(:>) x Principal
为什么?
可能是因为与其他运算符不同,强制转换运算符不将两个表达式作为参数;它们接受一个表达式和一个类型。因此,(:>) x
必须是"采用类型的函数",这不是 F# 中存在的东西。