1
0
Fork 0
mirror of synced 2024-06-03 03:04:58 +12:00
FiraCode/clojure/fira_code/coll.clj

25 lines
466 B
Clojure
Raw Normal View History

2020-03-24 12:37:50 +13:00
(ns fira-code.coll)
(defn index-of [pred xs]
(let [res (reduce (fn [i x] (if (pred x) (reduced i) (inc i))) 0 xs)]
(if (>= res (count xs))
-1
res)))
2020-03-24 12:37:50 +13:00
(defn group-by-to [key-fn value-fn xs]
(reduce-kv
(fn [m k vs]
(assoc m k (value-fn vs)))
{}
2020-05-15 13:51:54 +12:00
(group-by key-fn xs)))
(defn multimap-by [f & kvs]
(reduce
(fn [m [k v]]
(if (contains? m k)
(update m k f v)
(assoc m k v)))
{} (partition 2 kvs)))