Como estender um tipo com get_Zero para que eu possa usar genericamente um tipo existente?
Eu tento o seguinte:
let c x = System.Numerics.Complex(x, 0.0)
let sum = [c 1.0; c 2.0] |> List.sum
Mas eu recebo este erro:
The type 'System.Numerics.Complex' does not support the operator 'get_Zero'
Eu li as regras sobre extensões de tipo, dehttps://msdn.microsoft.com/en-us/library/dd233211.aspxe tente fazer o seguinte:
module ComplexExtension =
let c x = System.Numerics.Complex(x, 0.0)
type System.Numerics.Complex with
// I also tried a bunch of other ways of writing these
// as static or instance members, but nothing worked
static member Zero = c 0.0
static member One = c 1.0
open ComplexExtension
let sum = [c 1.0; c 2.0] |> List.sum
Eu ainda recebo esse erro.
É possível estender um tipo com o operador get_Zero? Ou tenho que criar meu próprio tipo de invólucro ao redorSystem.Numerics.Complex
e substituir todos os operadores, se eu quiser fazer as outras coisas que números complexos fazem?