一般的な算術演算を有効にするために、静的メソッドを使用して他のライブラリから型を拡張できるようにしたいと考えています。VectorN
たとえば、 Microsoftが新たに作成した SIMD 対応の固定サイズ型を考えてみましょう。彼らは を定義しZero
、 を定義し(+)
、 を定義しますが、 を定義していないため、それらを(/)
使用することはできません。Array.average
DivideByInt
open System.Numerics
type Vector2f with
static member DivideByInt (v:Vector2f) (i:int) = v / Vector2f(single i, single i)
let bigArray : Vector2f[] = readABigFile()
printf "the average is %A" (Array.average bigArray)
しかし、それは私をコンパイルさせません、不平を言います
error FS0001: The type 'Vector2f' does not support the operator 'DivideByInt'
F# コンパイラにこの制限があるのはなぜですか?
(編集:本質的に同じ質問が以前に尋ねられました。)