不同类型的泛型乘法

时间:2010-09-04 20:22:01

标签: .net generics f#

简单来说,我想实现这样的功能:

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#编译器使用。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

有没有理由专注于标量是浮点数的情况?我认为你最好的选择是进一步概括:

let inline myfunction scalar quantities =  
    List.fold (fun acc quantity -> acc + quantity * scalar)
        LanguagePrimitives.GenericZero<_>
        quantities