# How to appreciate Expr(:meta, args...)

**URL:** <https://discourse.julialang.org/t/how-to-appreciate-expr-meta-args/88071>\
**Category:** General Usage\
**Created:** [October 1, 2022, 4:52am UTC](https://discourse.julialang.org/t/how-to-appreciate-expr-meta-args/88071 "2022-10-01T04:52:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lionisxn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lionisxn/32/37989_2.png) [@lionisxn](https://discourse.julialang.org/u/lionisxn)\
**Post date:** [October 1, 2022, 4:52am UTC](https://discourse.julialang.org/t/how-to-appreciate-expr-meta-args/88071/1 "2022-10-01T04:52:09Z")

</div>

The Julia domment exlaining the Expr type of ‘:meta’ is so concise to a newer like me. What is the manning of Expr(:meta, args…), and how to use it? Simple examples may be helpfull.

---

<div class="post-metadata">

**Author:** ![anon56330260](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@anon56330260](https://discourse.julialang.org/u/anon56330260)\
**Post date:** [October 1, 2022, 6:58am UTC](https://discourse.julialang.org/t/how-to-appreciate-expr-meta-args/88071/2 "2022-10-01T06:58:27Z")

</div>

`@nospecialize` and `@specialize` use this to control specialization of parameters. Check `@macroexpand @specialize`. I believe there are other usages of this `meta` macro (like in `@inline`). But basically, the main purpose of `Expr(:meta, ...)` is to add some new features to Julia’s compiler in a convenient way (by compiler writers). It’s an internal construct, which means that it’s not exposed to normal users. You cannot design arbitrary custom metadata and hope that they will work out of box.  
And as you may notice, these features are auxiliary and not an essential part of semantics of the language. So maybe that’s why they don’t have their own syntactic representation, that is, instead of having `Expr(:specialize, ...)`, we have `Expr(:meta, :specialize, ...)`.

---

<div class="post-metadata">

**Author:** ![lionisxn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lionisxn/32/37989_2.png) [@lionisxn](https://discourse.julialang.org/u/lionisxn)\
**Post date:** [October 1, 2022, 7:14am UTC](https://discourse.julialang.org/t/how-to-appreciate-expr-meta-args/88071/3 "2022-10-01T07:14:55Z")

</div>

> [@anon56330260](#):
>
> ou canno

Many thanks！
