では、なぜ F# で > 演算子と ^ 演算子をオーバーロードできるのに、使用できないのか説明してもらえますか?
+ (op_Addition): Works just fine.
^ (op_Concatenate): Compiler error in F#. Apparently only strings can be concatenated.
> (op_GreaterThan): Runtime Error – Failure during generic comparison: the type Program+OppTest4 does not implement the System.IComparable interface.
F# コードをライブラリとしてコンパイルし、VB からそれらの演算子を使用すると、それらはすべて機能します。C# からこれらの演算子を使用すると、op_Concatenate 以外はすべて機能します (期待どおり)。しかし、F# はそれらのいくつかを無視するだけでなく、静的型チェッカーはその計画をユーザーに通知することさえしません。
コードサンプルを編集
type OppTest4(value: int) =
member this.value = value
static member (^) (left : OppTest4, right : OppTest4) =
OppTest4( Int32.Parse( left.value.ToString() ^ right.value.ToString() ))
static member (+) (left : OppTest4, right : OppTest4) =
OppTest4(left.value + right.value )
static member (>) (left : OppTest4, right : OppTest4) =
left.value > right.value
static member (<) (left : OppTest4, right : OppTest4) =
left.value < right.value