To a Haskeller, you could explain Java-style reference types by saying “it&#x27;s an artificial limitation whereby every value is behind an IORef, and the value itself isn&#x27;t a first-class entity”. But Haskell itself doesn&#x27;t have this artificial limitation, and every type is a value type.