Files
integreat/src/cljc/auto_ap/utils.cljc
2019-04-16 11:22:19 -07:00

39 lines
729 B
Clojure

(ns auto-ap.utils)
(defn by
([f xs]
(by f identity xs))
([f fv xs]
(reduce
#(assoc %1 (f %2) (fv %2))
{}
xs)))
(defn replace-if [f candidate existing]
(reduce
(fn [xs x]
(if (f x candidate)
(conj xs candidate)
(conj xs x)))
[]
existing))
(defn replace-by [xs f x]
(let [found? (atom false)
replaced (mapv
(fn [t]
(if (= (f t) (f x))
(do (reset! found? true)
x)
t))
xs)]
(if @found?
replaced
(into [x] replaced))))
(defn dollars-0? [amt]
(< -0.001 amt 0.001))
(defn dollars= [amt1 amt2]
(dollars-0? (- amt1 amt2) ))