Error en los métodos de extensión al alinear
Quiero ampliar algunos tipos de sistemas y luego usarlos a través de la inserción
type System.String with
member this.foo n = this + "!" + n
type System.Boolean with
member this.foo n = sprintf "%A!%A" this n
Ahora llamo a estos métodos de extensión
let x = "foo".foo "bar"
let y = true.foo "bar"
que me da esto
- val x : System.String = "foobar"
- val y : string = "true!"bar""
Todo bien y elegante, pero ahora quiero terminar la llamada a.foo
en una función en línea
let inline foo n v = (^T : (member foo : ^N -> ^S) v, n)
let z = foo "bar" "baz"
Solo ahora recibo un error del compilador que me dice que
> The type 'string' does not support the operator 'foo':
bueno ... lo hace!
¿Alguien puede explicar qué está pasando?