A lens is a set of function to read and write to a specific type of value. The lens handles the transforms of information such that the implementer can ignore the exact structure of the data when writing computations. In non-object oriented languages, like Clojure, lenses can be used to abstract the majority of code from the structure of values, such that changes can be made in the case of needing to expand the information stored therein.
(= (getName (setName person 'Jack')) 'Jack')
(= (setName person (getName person)) person)
(= (getName (setName (setName person 'John') 'Jack')) 'Jack')