Clojure:地图
我想在地图上使用地图功能。但我不能让它工作 玩具示例:Clojure:地图,clojure,functional-programming,Clojure,Functional Programming,我想在地图上使用地图功能。但我不能让它工作 玩具示例: (map map [+ - *] [1 2 3] [4 5 6] [7 8 9]) 我期望得到(121518)这样的结果,但我得到的只是一个错误 谢谢。如果要在列表上分别映射每个运算符,请使用 ((fn [ops & args] (map #(apply map %1 args) ops)) [+ - *] [1 2 3] [4 5 6] [7 8 9]) 或者如果你愿意重新排列论点 (map #(map %1 [1 2 3]
(map map [+ - *] [1 2 3] [4 5 6] [7 8 9])
我期望得到(121518)这样的结果,但我得到的只是一个错误
谢谢。如果要在列表上分别映射每个运算符,请使用
((fn [ops & args] (map #(apply map %1 args) ops)) [+ - *] [1 2 3] [4 5 6] [7 8 9])
或者如果你愿意重新排列论点
(map #(map %1 [1 2 3] [4 5 6] [7 8 9]) [+ - *])
两者都给出了
((12 15 18)(-10-11-12)(28 80 162))的结果。
您可以使用juxt
:
(应用地图列表(地图(juxt+-*)[1 2 3][4 5 6][7 8 9])
这将导致:
((12 15 18)(-10-11-12)(28 80 162))
作为现有答案的替代方案,您可以使用列表理解替换外部的地图,该地图比嵌套的地图更可读:
user=> (defn fun [ops & args]
#_=> (for [op ops]
#_=> (apply map op args)))
#'user/fun
user=> (fun [+ - *] [1 2 3] [4 5 6] [7 8 9])
((12 15 18) (-10 -11 -12) (28 80 162))