&gt; The viewpoint I meant is the technical<p>My objection was also a technical one: Haskell doesn&#x27;t give you access to the physical identity of any runtime object that isn&#x27;t a reference cell (`IORef`, `STRef`, `MVar`, `TVar`, etc.).<p>&gt; (and performance-centric) one<p>The ability to pass around arbitrarily complicated <i>values</i> in O(1) time is an intrinsic part of Haskell&#x27;s cost model. This is the most natural thing in the world, unless you&#x27;ve lived all your life subordinating values to object identities, in which case, yes, non-destructively transferring a value from one object identity to another (aka “deep cloning”) might be an arbitrarily expensive operation.