# Is it possible to overload \`:=\`?

**URL:** <https://discourse.julialang.org/t/is-it-possible-to-overload/95547>\
**Category:** General Usage\
**Created:** [March 4, 2023, 4:25pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547 "2023-03-04T16:25:53Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![CameronBieganek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cameronbieganek/32/6915_2.png) [@CameronBieganek](https://discourse.julialang.org/u/CameronBieganek)\
**Post date:** [March 4, 2023, 4:25pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547/1 "2023-03-04T16:25:53Z")

</div>

This was my first attempt to overload the `:=` operator:

```julia
julia> (:=)(x, y) = x + y
ERROR: syntax: invalid identifier name ":="

```

This was my second attempt:

```julia
julia> var":="(x, y) = x + y
:= (generic function with 1 method)

julia> 1 := 2
ERROR: syntax: unsupported assignment operator ":="

```

The `:=` operator is listed as an assignment operator [in the Julia parser](https://github.com/JuliaLang/julia/blob/5f8fcd9423685102640b2b37b16c34877241b92b/src/julia-parser.scm#L9), so it seems like there ought to be a way to get this to work. Does anyone know if it’s possible? (I mean outside of a macro.)

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [March 4, 2023, 6:26pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547/2 "2023-03-04T18:26:43Z")

</div>

> [@CameronBieganek](#):
>
> Does anyone know if it’s possible? (I mean outside of a macro.)

I don’t think so. You can’t overload assignment operators in Julia. I think `:=` is currently only usable via macros.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [March 4, 2023, 8:23pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547/3 "2023-03-04T20:23:17Z")

</div>

You can get partway there using the COLON EQUALS (U+2254) unicode character (typed in Julia as `\coloneq<TAB>`):

```julia
julia> ≔(x,y) = x + y
≔ (generic function with 1 method)

julia> ≔(2, 5)
7

```

But you can’t use it as an infix operator:

```julia
julia> 2 ≔ 5
ERROR: syntax: unsupported assignment operator "≔"

```

---

<div class="post-metadata">

**Author:** ![CameronBieganek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cameronbieganek/32/6915_2.png) [@CameronBieganek](https://discourse.julialang.org/u/CameronBieganek)\
**Post date:** [March 4, 2023, 8:49pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547/4 "2023-03-04T20:49:48Z")

</div>

Yeah, I looked at the Unicode character, but in most fonts it seems really hard to visually distinguish it from a regular `=`.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [March 4, 2023, 8:51pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547/5 "2023-03-04T20:51:48Z")

</div>

> [@CameronBieganek](#):
>
> it seems really hard to visually distinguish it from a regular `=`

I agree.

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [March 4, 2023, 9:06pm UTC](https://discourse.julialang.org/t/is-it-possible-to-overload/95547/6 "2023-03-04T21:06:44Z")

</div>

FWIW:  
`:\_=<tab>`  
produces the symbol:  
`:₌`
