F # - ¿Cómo extiendo un tipo con get_Zero para poder usar un tipo existente genéricamente?
Intento lo siguiente:
let c x = System.Numerics.Complex(x, 0.0)
let sum = [c 1.0; c 2.0] |> List.sum
Pero me sale este error:
The type 'System.Numerics.Complex' does not support the operator 'get_Zero'
Leí las reglas sobre extensiones de tipo, dehttps://msdn.microsoft.com/en-us/library/dd233211.aspxe intente hacer lo siguiente:
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
Todavía me sale ese error.
¿Es posible extender un tipo con el operador get_Zero? ¿O tengo que crear mi propio tipo de envoltura alrededorSystem.Numerics.Complex
y anular todos los operadores si quiero que haga las otras cosas que hacen los números complejos?