Naive way to filter a list of maps in clojure:
(defn matches-addresses? [addresses]
(fn [it]
(lazy-seq (loop [as addresses
acc [(quote or)]]
(if (seq (first as))
(recur (rest as) (conj acc (lazy-seq [(quote =) (first as) (get it :private-ip-address)])))
acc)))))