0
Hier ist meine Lösung.4clojure # 69 Zusammenführen mit einer Funktion
(defn mf [f & ms] (
(let [mm (apply merge ms)
ks (keys mm)
rf (fn [koef fc maps] (reduce fc (filter #(not (= % nil)) (map koef maps))))]
(into {} (map #(vector % (rf % f ms)) ks)))))
Wenn ich versuche, es zu verwenden, erhalte ich einen Fehler.
(mf + {:a 1 :b 2 :d 7} {:a 2 :b 3 :c 6})
ArityException Falsche Anzahl von args (0) bestanden: PersistentArrayMap clojure.lang.AFn.throwArity (AFn.java:429)
Allerdings, wenn ich Eingabedefinitionen in repl Zeile für Zeile, alles läuft gut.
>(def f +)
>(def ms '({:a 1 :b 2 :d 7} {:a 2 :b 3 :c 6}))
>(def mm (apply merge ms))
...
>(into {} (map #(vector % (rf % f ms)) ks))
{:c 6, :a 3, :b 5, :d 7}
>
Was ist los mit meiner Lösung?