Вы полностью переопределили оператор -
.
Если вы хотите расширить один из ваших собственных типов для работы с -
, вы можете сделать это (определения встроенного оператораподберем членов по виду).Но я не думаю, что есть какой-либо способ определить существующие операторы для встроенных / существующих типов, который не полностью затеняет определение встроенного оператора.
Вы можете использовать локальную let
привязку для временной тени * 1010.* для работы с массивами с плавающей точкой, или вы можете определить новый оператор вместо этого.Примеры:
// locally shadow
let f() =
let (-) (a:float[]) (b:float[]) = ...
// use (-) on arrays for a moment
// use (-) as normal
и
// new operator
let (-@) (a:float[]) (b:float[]) = ...
[|1.0|] -@ [|2.0|] // my new op
1.0 - 2.0 // minus as normal