# How is \`Symbol\` special?

**URL:** https://discourse.julialang.org/t/how-is-symbol-special/129885
**Category:** Internals & Design
**Created:** [June 13, 2025, 9:43pm UTC](https://discourse.julialang.org/t/how-is-symbol-special/129885 "2025-06-13T21:43:46Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [June 14, 2025, 3:36am UTC](https://discourse.julialang.org/t/how-is-symbol-special/129885/2 "2025-06-14T03:36:28Z")

</div>

> [@nsajko](#):
>
> `Symbol` is a `mutable struct`, just like `Expr`:
> 
> Although it’s not possible to mutate it, as it doesn’t have any fields.

Thanks for this correction, too. I also corrected it in my post above. But why do we have

> [@Why is \`Expr\` mutable?](https://discourse.julialang.org/t/why-is-expr-mutable/129850/1):
>
> ```julia
> struct MySymbol
> symbol::Symbol
> end
> 
> julia> MySymbol(:a) == MySymbol(:a)
> true
> 
> ```

the field equality in `MySymbol` when `Symbol` is a mutable type? Is `Symbol` the same mutable/immutable hybrid as `String`? Both types have a lot of similarity, so I guess this would not be too surprising.

---

_[View the full topic](https://discourse.julialang.org/t/how-is-symbol-special/129885)._
