在F#中,操作符重載似乎很強大,但也很難得到正確的結果。 我有以下類:F#操作符重載謎語
type Value<'T> =
with
static member inline (+) (a : Value<'U>, b: Value<'U>) : Value<'U> =
do stuff
如果我定義另一個過載+有:
static member inline (+) (a : Value<'U>, b: 'U) : Value<'U> =
do stuff
它的工作原理。但是,如果我想要一個對稱操作:
static member inline (+) (b: 'U, a : Value<'U>) : Value<'U> =
do stuff
編譯器會抱怨:
let a = Value<int>(2);
let b = a + 3 // ok
let c = 3 + a //<-- error here
錯誤3類型推斷的問題太複雜(最大迭代深度達到)。考慮添加更多類型註釋
是否有解決方法並保持通用?
我使用F#3.1
感謝
其實我會重新解釋這個問題,因爲我問錯了。感謝回答 – Liviu