(ns lab.planilha) (def planilha [{:desc "caneta" :est 1000 :vend 600 :dev 15} {:desc "borracha" :est 5000 :vend 750 :dev 3}]) (defn proto-processa [p] (let [ks (keys (first p))] (->> (map #(map % p) ks) (map #(reduce + %) ) (interleave ks ) (apply hash-map )))) (defn processa ([p] (processa + p)) ([f p] (let [ks (->> (first p) (filter #(number? (second %)) ) (map first ))] (->> (map #(map % p) ks) (map #(reduce f %) ) (interleave ks ) (apply hash-map )))))