                                  (keys v)
                                  (meta v)))))))
 
+(defn mk-printer
+  [opts]
+  (cond
+    (nil? opts) default-printer
+
+    (-> opts first (= :-))
+    (mk-printer-black-list (rest opts))
+
+    :else (mk-printer-white-list opts)))
 
 (defmacro with-this-printer
   "Sets the printer as `prn` for the lexical scope. `prn` may be a

                     default-printer
                     false))

(defn mk-printer
  [opts]
  (cond
    (nil? opts) default-printer

    (-> opts first (= :-))
    (mk-printer-black-list (rest opts))

    :else (mk-printer-white-list opts)))

(defn set-printer!
  "Sets the printer that is applied by `with-printer` and used by print
  functions such as `ws-print`."

  such as `ws-print`."
  (atom default-printer))

(declare with-printer)
(declare ws-query*)
(declare ws-query)
(declare ws-print)
(declare trees-print)

;; === Helper functions

