Let’s say that I create a new struct called `MyMatrix`

:

```
import Base: size, getindex
struct MyMatrix{T} <: AbstractMatrix{T}
X::Matrix{T}
function MyMatrix(n::Int)
new{Float64}(rand(n,n)) # For sake of the example
end
end
Base.size(X::MyMatrix) = size(X.X)
Base.getindex(X::MyMatrix, inds...) = getindex(X.X, inds...)
```

Now, if I use `-`

from Base, the type `MyMatrix`

is not preserved (which is expected):

```
julia> X = MyMatrix(2)
2×2 MyMatrix{Float64}:
0.984525 0.843545
0.862174 0.266042
julia> X .- 1
2×2 Array{Float64,2}:
-0.0154746 -0.156455
-0.137826 -0.733958
```

The question is: how can I extend `-`

so that it uses `.`

notation and preserves `MyMatrix`

type? Ideally, I’d want:

```
julia> X .- 1
2×2 MyMatrix{Float64,2}:
-0.0154746 -0.156455
-0.137826 -0.733958
```

Thanks!