2012-07-30 35 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