(地图(周期[+ - ])[1 1 1] [1 1 1])
在这个例子中,我希望它返回; (2 0 2)
感谢下面的帮助,解决方案是:
(map (fn [a b c] (a b c)) (cycle [+ -]) [1 1 1] [1 2 3])
或
(map #(%1 %2 %3) (cycle [+ -]) [1 1 1] [1 2 3])
简称
答案 0 :(得分:3)
map的第一个参数需要是一个将应用于集合的每个元素的函数。你所拥有的是一个函数向量。所以你需要的是一个函数,它将向量的每个元素应用到其他向量中的相应元素。像这样:
(map #(%1 %2 %3) (cycle [+ -]) [1 1 1] [1 1 1])
答案 1 :(得分:3)
是 -
(map #(%1 %2 %3) (cycle [+ -]) [1 1 1] [1 1 1])
;;(2 0 2)
#
是匿名函数的简写,%
是传递的参数的编号。所以你只是在对抗map
(+ 1 1)
,(- 1 1)
,(+ 1 1)