Итак, у вас есть карта, которая проходит через некоторые преобразования, и в итоге вы получаете окончательную карту.Ваша реализация выглядит хорошо для меня, за исключением того, что -Y
ничего не делает и может не потребоваться как отдельная функция.
Вы можете сделать все это, используя только функцию reduce
, что-то вроде:
(def operations [ [:x #(reduce + (:values %))]
[:y #(/ (:x %) 100)]
[:z #(* (:y %) 10000000)]
])
(defn build-map [a-map]
(reduce (fn [s [k f]] (assoc s k (f s) ) ) a-map operations)
)
(build-map {:values (range 8)})