Lenses aren&#x27;t really designed for providing OOP, they just happen to be able to do that too.<p>Have you ever wanted to return a copy of an array with an element changed? Like (JS) var new_a = a.concat(b) gives you a new array, don&#x27;t you sometimes wish there was e.g. new_a = a.update(3, x)? I sure have. That&#x27;s what lenses do, and they do that more efficiently and for way more than just arrays.