2012-07-30 61 views
4

我在Clojure寫了一個簡單的照片庫應用程序。我有一個library地圖,其中有:photos密鑰,它是一個照片地圖的矢量。然後,我有一個功能可以將照片添加到庫中 - 它將圖庫對象和照片添加爲參數。Clojure地圖般的流通功能

(defn add-to-library [library photo] 
    ... 
) 

它返回library映射,並添加photo

現在,我想將這個功能「映射」到照片列表上。我需要能夠將library對象從一個迭代傳遞到下一個迭代。

在Clojure中做這件事的慣用方式是什麼?

回答

7

Try:

(reduce add-to-library library list-of-photos)

reduce功能非常好,而且是一個通用的工具,可以令人驚訝地適用於很多特定的情況。其中許多情況與您的情況類似,您擁有「收集的東西」,「爲該收藏添加東西的功能」以及「要添加的東西列表」。如果第一次瞭解reduce,這可能不是起始材料,但我發現它很有趣:http://clojure.com/blog/2012/05/08/reducers-a-library-and-model-for-collection-processing.html