I have a persistent map which I want to filter. Something like this:
(filter #(-> % val (= 1)) {:a 1 :b 1 :c 2})
The above comes out as
Per your comment to Michał Marczyk:
(defn filter* [f map] (reduce (fn [m [k v :as x]] (if-not (f x) (dissoc m k) m)) map map)) user> (filter* #(-> % val (= 1)) {:a 1 :b 1 :c 2}) {:a 1, :b 1}
I don't see that you're going to gain much with this vs. Michał's version.