How can I alias a macro?

I would like to use `@dot`

instead of `@.`

.

You could do

```
macro dot(expr)
:(@. $expr))
end
```

There is also the predefined alias `@__dot__`

.

Thanks!

Oops.

`@.`

seems to be more elaborate than the above definition of `@dot`

.

It also works for in-place assignments for which `@dot`

gives an error:

```
x = [0,1,2]
y = zeros(3)
@dot y = exp(x)
```

You need to use `esc`

correctly.

```
macro dot(expr)
esc(:(@. $expr))
end
```

- Is this correct?
- Is this the simplest way to alias a macro?

No. On 0.6 the correct and preferred way is `:(@. $(esc(expr)))`

, i.e. you must escape each input once and exactly once. On master this is broken so the only way you can do this is `esc(:($Base.@. $(esc(expr))))`

You can also just do `@eval const $(Symbol("@dot") = $(Symbol("@__dot__")))`

Thank you very much for the detailed explanation.

There was a small typo in parenthesizing, but the last version also works:

`@eval const $(Symbol("@dot")) = $(Symbol("@__dot__"))`

Despite this old thread, perhaps it deserves to mention that a more convenient way is to use the `var"name"`

syntax introduced in Julia 1.3.

```
julia> var"@myassert" = var"@assert";
julia> @myassert 1 + 1 == 3 "wrong equation"
ERROR: AssertionError: wrong equation
```

See here and this Stackoverflow for details.

Thank you for sharing this useful info!

`const var"@myassert" = var"@assert"`