| ▲ | jcparkyn 3 hours ago |
| It's only semantically a pass-by-value, in reality a reference is passed and the data is only copied if needed (i.e. value is mutated while shared). |
|
| ▲ | zahlman 2 hours ago | parent [-] |
| So the language has reference semantics, and (per the edit) for every object (like in Python)? (Ah, no, your example elsewhere in the thread suggests that the referred-to structures get implicitly copied all over the place.) |
| |
| ▲ | jcparkyn 2 hours ago | parent [-] | | Nope, it's value semantics (unlike Python), the references are just an internal optimization. Implicit copies happen when a list/dict with more than one reference is mutated. | | |
| ▲ | zahlman an hour ago | parent [-] | | > the references are just an internal optimization Optimization specifically for function calls, or... ? Because if you're doing all this copy-on-write anyway, the indirection seems to be a needless cost in other contexts. |
|
|