简单来说,我想实现这样的功能:
let myfunction (scalar : float) (quantities : ''T list) =
List.fold (fun acc quantity -> acc + quantity * scalar)
LanguagePrimitives.GenericZero<_>
quantities : 'T
请注意,我将泛型类型'T
的值与浮点值(quantity * scalar
)相乘,后者应返回类型'T
的值。例如,将Point
乘以Point
中的标量结果。
我不能让F#理解乘法quantity * scalar
应该得到'T
类型的值。我试过LanguagePrimitives.MultiplyDynamic
,但似乎这个函数保留给F#编译器使用。
我该怎么办?
答案 0 :(得分:3)
有没有理由专注于标量是浮点数的情况?我认为你最好的选择是进一步概括:
let inline myfunction scalar quantities =
List.fold (fun acc quantity -> acc + quantity * scalar)
LanguagePrimitives.GenericZero<_>
quantities