Clojure,将一个函数映射到两个参数,一个参数是固定的,另一个是从列表中获取

时间:2014-08-14 09:55:10

标签: map clojure

我有一个带两个参数的函数。

现在我想:

(map fn x [y1 y2 y3])

我需要在fn

上应用x y1 , x y2 , x y3的结果

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

这就是部分原因。

http://clojuredocs.org/clojure_core/clojure.core/partial

针对您的具体情况:

(map (partial fn x) [y1 y2 y3])

答案 1 :(得分:4)

有几种方法可以做到这一点:

首先,根据需要重复x

(map fn (repeat x) [y1 y2 y3])

repeat将返回一个懒惰的xs序列。

另一种方法是使用partial函数,该函数应用于已经绑定到原始函数的参数部分。

(map (partial fn x) [y1 y2 y3])

(partial fn x)将返回x已应用于原始fn的函数。结果将是((fn x y1) (fn x y2) (fn x y3))

答案 2 :(得分:3)

(map #(f x %) [y1 y2 y3])

#()是(fn [args](...))的读者宏