lein repl (use 'lens.core :reload) (def home (->Address "road" "place" 4000)) (def mark (->Person "mark" 99 home)) (def user (->User 3365 "mth" mark "6aefd2842be62cd470709b27aedc7db7")) (show home) (show mark) (show user) (lget lpostcode home) (lset lpostcode home 5000) (lmodify lpostcode home #(+ 1 %)) (lcompose laddress lpostcode) (lget (lcompose laddress lpostcode) mark) (lset (lcompose laddress lpostcode) mark 500) (-get -postcode home) (-set -postcode home 500) (-modify -postcode home #(+ 10 %)) (-get (comp -address -postcode) mark) (-set (comp -address -postcode) mark 500) (-set -plaintext user "orange") (-get (comp -identity -address -postcode) user) (-set (comp -identity -address -postcode) user 500) (-modify (comp -identity -address -postcode) user #(+ 10 %))