为什么覆盖相等和比较运算符以产生除 bool 以外的类型如此困难,是否有特定的原因。
我在下面有一个解决方法,但为什么语言不能让这更容易呢?
我在这里使用的是一个外部库,它已经重载了这些运算符,我只是希望它们在 F# 中以相同的方式工作。我必须这样做才能实现这一点似乎并不正确。
type ATArrayLT = ATArrayLT with
static member (?<-) (x:ATArray, ATArrayLT, y:int ) = ATArray.op_LessThan(x, float32 y)
static member (?<-) (y:int , ATArrayLT, x:ATArray) = ATArray.op_LessThan(x, float32 y)
static member (?<-) (x:ATArray, ATArrayLT, y:float32) = ATArray.op_LessThan(x, y)
static member (?<-) (y:float32, ATArrayLT, x:ATArray) = ATArray.op_LessThan(x, y)
static member (?<-) (x:ATArray, ATArrayLT, y:ATArray) = ATArray.op_LessThan(x, y)
static member inline (?<-) (x , ATArrayLT, y ) = x < y
let inline (<) x y = x ? (ATArrayLT) <- y