Clojure地图般的流通功能

时间:2012-07-30 01:38:00

标签: clojure lisp

我正在Clojure中编写一个简单的照片库应用程序。我有library地图,其中:photos键是照片地图的矢量。然后,我有一个将照片添加到库中的函数---它将库对象和照片作为参数添加。

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

它会返回library地图并添加photo

现在,我想在照片列表中“映射”此功能。我需要能够将library对象从一次迭代传递到下一次迭代。

在Clojure中这样做的惯用方法是什么?

1 个答案:

答案 0 :(得分:7)

尝试:

(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