減少在這本書中Clojure for the Brave and True在覆蓋reduce該節結束時有一個挑戰:如何實現地圖使用Clojure中
如果你想鍛鍊真的會吹你的頭髮回來,請嘗試使用實施
map
reduce
事實證明,這比我想象的要難得多(至少對我來說,是一個Clojure初學者)。幾個小時後,我想出了這個:
(defn map-as-reduce
[f coll]
(reduce #(cons (f %2) %1) '() (reverse coll)))
是一個更好的方法來做到這一點?我特別感到沮喪的是,爲了正確工作,我必須將輸入集合反轉。看起來好像不太好!
我不明白爲什麼它會改變結果而不是輸入;複雜性是線性的。 –
@SamEstep:是的,好的。扭轉結果更爲常見。 – Svante
我不太瞭解你對「爲其他'seq's提供其他實現」的評論;本頁面上所有'map'的實現都適用於所有'Seqable'輸入。如果你的意思是*生成*不同類型的序列,那麼當我們很容易用['vec'](http)組成'map'時, ://clojuredocs.org/clojure.core/vec)等等。 –