# How to reference argument of expression

**URL:** <https://discourse.julialang.org/t/how-to-reference-argument-of-expression/80213>\
**Category:** New to Julia\
**Tags:** macros, metaprogramming\
**Created:** [April 28, 2022, 1:45pm UTC](https://discourse.julialang.org/t/how-to-reference-argument-of-expression/80213 "2022-04-28T13:45:46Z")\
**Posts on this page:** 1\
**Showing post:** 12

<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:** [May 4, 2022, 11:36am UTC](https://discourse.julialang.org/t/how-to-reference-argument-of-expression/80213/12 "2022-05-04T11:36:05Z")

</div>

> [@o314](#):
>
> I think there will be a mismatch between the part of the language you are targeting (meta programming, lisp based) and your approach of programming (imperative programming)

Metaprogramming in Julia is not really any less imperative than the rest of the language — a macro in Julia is basically just an ordinary Julia function that happens to be called at an unusual time (at code-lowering time, right after parsing but before compilation); you can implement it in an imperative style if you want.

Rather, I think this is the usual [confusion between assignment and mutation](https://discourse.julialang.org/t/assignment-and-mutation/19119/4) that arises in all imperative languages that use the same `=` symbol for both.

---

_[View the full topic](https://discourse.julialang.org/t/how-to-reference-argument-of-expression/80213)._
