 (= (lens/write user first-name  "Newname")
    (lens/write user first-name2 "Newname"))
 
-;; since using keywords to reference fields in maps is so commen
+;; since using keywords to reference fields in maps is so common
 ;; you can use them directly as lenses
 
 (= (lens/write user first-name  "Newname")

   :last-name "funke"
   :email "tobias.funke@gmail.com"})

;; this is the raw way to define a lense
;; you call lens/lens and give it a function
;; that takes a root value in this case a user
;; and returns a pair where the first value

;; and gives you a traversal of all nodes in the tree
;; EXAMPLE:

;; since nodes in the

(def xml-nodes (tree/pre-tree
                [:content
                 (travers/filtered map?) ; we don't want to list the strings
                                         ; in the tree as nodes
                                         ; so we filter them here
                 ]))

;; xml nodes here is a lens/traversal that lets you view and modify
;; nodes of the tree in a pre-walk fashion.
;; (there is also a post-tree that lets you do it in a post-walk fashion)

;; ok so lets shrink the nodes we are working with to only the nodes
;; with the tag author
