【发布时间】:2014-08-14 09:55:10
【问题描述】:
我有一个带有两个参数的函数。
现在我想:
(map fn x [y1 y2 y3])
我需要fn 的结果应用于x y1 , x y2 , x y3
谁能帮忙?
【问题讨论】:
我有一个带有两个参数的函数。
现在我想:
(map fn x [y1 y2 y3])
我需要fn 的结果应用于x y1 , x y2 , x y3
谁能帮忙?
【问题讨论】:
有几种方法可以做到这一点:
首先,只需根据需要重复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))。
【讨论】:
这就是 partial 的用途。
http://clojuredocs.org/clojure_core/clojure.core/partial
针对您的具体情况:
(map (partial fn x) [y1 y2 y3])
【讨论】:
(map #(f x %) [y1 y2 y3])
#() 是 (fn [args] (...)) 的读取器宏
【讨论】: