karl> (def gizmo (atom[])) #'karl/gizmo karl> (add-watch gizmo :dog (fn [key gizmo old new] (println key old new))) # karl> (swap! gizmo conj true) :dog [] [true] [true] karl> (if (seq? (seq @gizmo)) (swap! gizmo pop)) :dog [true] [] [] karl> (if (seq? (seq @gizmo)) (swap! gizmo pop)) nil