Проще говоря, я хочу реализовать такую функцию:
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 #.
Что мне делать?