等値演算子と比較演算子をオーバーライドして 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