# Shared --- Hold multiple references to the same object ```text Shared[[] Type] ``` # Garbage Collection A tracing mark and sweep garbage collector is used # Mutating ```text x : Shared[Array] $ (1; 2; 3) ^ x {[y] y `push 4 } `log x // Shared[Array[I64]] $ (1; 2; 3; 4) ``` # Operators ## ``get` ## ``set` ### Example sharing data between two shared objects ```text x : Shared $ 1 y : Shared $ 0 z : ^ x {[x] x } ^ y {[y] y : z } // same as above y `set `get x ```