================
If your language works like this by default..
var x = {a: 5};
var y = {a: 5};
x === y; // => false
..you're fighting insanity..
var x = {a: 5};
var y = x.a;
y.b = 4;
x === y; // => true
x.b; // => 4
..and don't let an unfamiliar syntax trick you..
(let [x {:a 5}
y {:a 5}]
(= x y)) ;; => true
..because simplicity isn't about syntax..
(let [x {:a 5}
y (assoc x :b 4)]
(= x y)) ;; => false
..it's about minimizing the gap between your brain and the problem.