# Open Discussion: Immutable and explicit copies
*These are collaborative notes from the open discussion round about "Immutable and explicit copies" at the [Solidity Summit 2020](https://solidity-summit.ethereum.org/).*
## Explicit copies
The `copyof x` syntax
- Current assignment semantics are already confusing. The added clarity would be worth the verbosity.
- Making copies explicit is in itself a good idea but the weird semantics of the copy operator might themselves add more confusion.
## "Pure" functions and mutable references
`mutable`/`immutable` could alternatively be specified at the call site.
## Immutable variables
Putting `mutable` everywhere would be verbose. People would have to adjust to the new style of writing code.
## Complex example
```
uint[] s1;
function f(uint[] immutable a) pure returns (uint ret) {
ret = a[0];
ret = a[1];
}
function g(uint[] mutable a) {
a[1] = 1;
a[2] = 3;
}
function h() {
uint[] storage s2 = ref s1;
uint[] mutable memory a = copy s2;
uint[] immutable memory b = copy s2;
f(a); // works
f(copyof a); // works
g(a); // works
g(copyof a); // works
g(b); // fails
g(copyof b); // works?
}
```