我使用的是Clojure 1.8,我期望減少並適用於這個特定示例的輸出方式。減少/應用不匹配
user=> (apply max-key val {:a 2 :bb 1})
[:a 2]
user=> (reduce max-key val {:a 2 :bb 1})
[:bb 1]
他們看起來像他們不是,任何人都可以解釋爲什麼?謝謝
我使用的是Clojure 1.8,我期望減少並適用於這個特定示例的輸出方式。減少/應用不匹配
user=> (apply max-key val {:a 2 :bb 1})
[:a 2]
user=> (reduce max-key val {:a 2 :bb 1})
[:bb 1]
他們看起來像他們不是,任何人都可以解釋爲什麼?謝謝
apply
預先考慮參數的max-key
呼叫。 reduce
- 另一方面 - 減少超過{:a 2 :bb 1}
,使用兩個參數調用max-key。 val
在reduce中被視爲the initial value of the accumulator。
一個reduce
形式相當於你apply
是:
(reduce #(max-key val %1 %2) {:a 2 :bb 1})
(reduce max-key val {:a 2 :bb 1})
使用max-key
作爲累加器和val
作爲初始值。它有效地擴展爲:
(max-key (max-key val [:a 2]) [:bb 1]))
(max-key val [:a 2])
是[:a 2]
和(max-key [:a 2] [:bb 1])
爲什麼你怎樣exepct他們是一樣的嗎? – Lee