# Assignment and argument passing semantics

**URL:** <https://discourse.julialang.org/t/assignment-and-argument-passing-semantics/17034>\
**Category:** Offtopic\
**Created:** [November 1, 2018, 3:45am UTC](https://discourse.julialang.org/t/assignment-and-argument-passing-semantics/17034 "2018-11-01T03:45:19Z")\
**Posts on this page:** 1\
**Showing post:** 21

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [November 2, 2018, 6:25pm UTC](https://discourse.julialang.org/t/assignment-and-argument-passing-semantics/17034/21 "2018-11-02T18:25:55Z")

</div>

> [@yuyichao](#):
>
> No. It’s just a view that doesn’t conflict with the reality in some limited situation.

Limited how? It’s a valid viewpoint that’s consistent with Julia’s semantics. The reality is somewhere in between “all `1`s are the same” and “all `1`s are equivalent copies”: some instances of the expression `1` will refer to a shared copy of the object `1` (via the `Int` box cache), others will refer to separate copies (in registers or arrays), still others will never refer to any object at all (optimized out). The whole point of having semantics as an abstraction is that it doesn’t matter, so if someone wants to think of things in terms of one potential implementation of the semantics, they’re free to do so.

---

_[View the full topic](https://discourse.julialang.org/t/assignment-and-argument-passing-semantics/17034)._
