我目前有这个功能:
let equal x1 x2 = abs(x1 - x2) < tolerance
检查是否具有一定的容差,因为我们正在检查浮点数,因此它们不会完全相等。
如何在浮点数上将其设为二进制中缀运算符,如x~ = y?
我试过了:
type System.Double with
static member (~-) (this, that: System.Double) =
equal this that
然后它说我扩展方法不能提供运算符重载
然后我尝试从System.Double继承并执行相同的操作:
type double() =
inherit System.Double()
static member (==) (this, that: double) =
equal this that
但它抱怨我无法继承“密封”类型
然后你如何用这个操作符重载来定义一个类型double,它的作用就像普通的System.Double(F#中的“float”)但是有了这个运算符的重载方法?
答案 0 :(得分:1)
let (=~) x1 x2 = abs(x1 - x2) < tolerance