diff options
Diffstat (limited to 'users/grfn/bbbg/src/bbbg/util/core.clj')
-rw-r--r-- | users/grfn/bbbg/src/bbbg/util/core.clj | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/users/grfn/bbbg/src/bbbg/util/core.clj b/users/grfn/bbbg/src/bbbg/util/core.clj index 9ef8ef6bee..d458aa5592 100644 --- a/users/grfn/bbbg/src/bbbg/util/core.clj +++ b/users/grfn/bbbg/src/bbbg/util/core.clj @@ -52,6 +52,14 @@ ([f] (map-kv f identity)) ([f m] (map-kv f identity m))) +(defn keep-keys + "Map f over the keys of m, keeping only those entries for which f does not + return nil. Preserves metadata on the incoming map. The one-argument form + returns a transducer that yields map-entries." + ([f] (keep (fn [[k v]] (when-let [k' (f k)] + (first {k' v}))))) + ([f m] (into (empty m) (keep-keys f) m))) + (defn map-vals "Map f over the values of m. Preserves metadata on the incoming map. The one-argument form returns a transducer that yields map-entries." |