# Is multiple dispatch possible for an enumerated type?

**URL:** <https://discourse.julialang.org/t/is-multiple-dispatch-possible-for-an-enumerated-type/103420>\
**Category:** General Usage\
**Created:** [August 31, 2023, 6:48pm UTC](https://discourse.julialang.org/t/is-multiple-dispatch-possible-for-an-enumerated-type/103420 "2023-08-31T18:48:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![andrey2185](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/andrey2185/32/9889_2.png) [@andrey2185](https://discourse.julialang.org/u/andrey2185)\
**Post date:** [August 31, 2023, 6:48pm UTC](https://discourse.julialang.org/t/is-multiple-dispatch-possible-for-an-enumerated-type/103420/1 "2023-08-31T18:48:02Z")

</div>

Hello, is multiple dispatch possible for an enumerated type ?

my version:

```julia
@enum Foo M=1 N=2
Bar(x) = Bar(Val(x))
Bar(::Val{M}) = 111
Bar(::Val{N}) = 222

```

---

<div class="post-metadata">

**Author:** ![hendri54](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hendri54/32/9621_2.png) [@hendri54](https://discourse.julialang.org/u/hendri54)\
**Post date:** [August 31, 2023, 7:49pm UTC](https://discourse.julialang.org/t/is-multiple-dispatch-possible-for-an-enumerated-type/103420/2 "2023-08-31T19:49:49Z")

</div>

Possible, but perhaps not desirable. See

> [@Dispatch on enum](https://discourse.julialang.org/t/dispatch-on-enum/77398):
>
> Hey all slight_smile Is it possible to dispatch a function on different enum instances. Something like this: julia\> @enum E a b julia\> f(::Type{a}) = :a julia\> f(::Type{b}) = :b julia\> f(a) :a

---

<div class="post-metadata">

**Author:** ![digital\_carver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digital_carver/32/33818_2.png) [@digital\_carver](https://discourse.julialang.org/u/digital_carver)\
**Post date:** [September 1, 2023, 4:19am UTC](https://discourse.julialang.org/t/is-multiple-dispatch-possible-for-an-enumerated-type/103420/3 "2023-09-01T04:19:11Z")

</div>

Does the same apply for SumTypes.jl too?

---

<div class="post-metadata">

**Author:** ![HanD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hand/32/213908_2.png) [@HanD](https://discourse.julialang.org/u/HanD)\
**Post date:** [September 1, 2023, 3:17pm UTC](https://discourse.julialang.org/t/is-multiple-dispatch-possible-for-an-enumerated-type/103420/4 "2023-09-01T15:17:18Z")

</div>

Take a look at [WhereTraits.jl](https://github.com/jolin-io/WhereTraits.jl) or even [MLStyle.jl @switch](https://thautwarm.github.io/MLStyle.jl/latest/syntax/switch.html), for example.
