Clojure めも
DDDに出てきた、SharePie 関数型の方が似合うかなと思って、試してみたが。
(def pie-a {:a 10 :b 20 :c 30 :d 40}) (def pie-b {:a 1, :b 2, :c 3 :d 4}) (def pie-c {:b 200, :c 300}) (def pie-d {:a 1000, :b 2000, :c 3000 :d 4000}) (merge-with + pie-a pie-b pie-c) (merge-with - pie-d pie-a pie-b) (defn protated [amount pie] (def total (reduce + (map (fn [k] (second k)) pie))) (apply hash-map (flatten (map (fn [w] [(first w) (/ (* (second w) amount) total)]) pie)))) (protated 1000 pie-a) (defn protated-merge [amount pie] (merge-with + pie (protated amount pie))) (protated-merge 1000 pie-a)
こなれてない。