Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在clojure中组合序列?_Clojure - Fatal编程技术网

如何在clojure中组合序列?

如何在clojure中组合序列?,clojure,Clojure,我有以下序列 (def a [1 2 3 4]) (def b [10 20 30 40]) (def c [100 200 300 400]) 我想逐个元素组合序列: (... + a b c) 给我: [111 222 333 444] 是否有标准功能可用于此操作?或者,什么是一种好的惯用方法呢?您正在寻找的函数是 请注意,map返回一个惰性序列,而不是示例中所示的向量。但是您可以使用函数将惰性序列倒进一个空向量中 (into [] (map + [1 2 3 4] [10 20 3

我有以下序列

(def a [1 2 3 4])
(def b [10 20 30 40])
(def c [100 200 300 400])
我想逐个元素组合序列:

(...  + a b c)
给我:

[111 222 333 444]

是否有标准功能可用于此操作?或者,什么是一种好的惯用方法呢?

您正在寻找的函数是

请注意,
map
返回一个惰性序列,而不是示例中所示的向量。但是您可以使用函数将惰性序列倒进一个空向量中

(into [] (map + [1 2 3 4] [10 20 30 40] [100 200 300 400]))
;=> [111 222 333 444]

此外,(为了完整性,正如在另一个答案中所指出的),在Clojure 1.4.0+中,您可以使用
mapv
(使用与
map
相同的参数)以获得向量结果。

如果您使用Clojure-1.4.0或更高版本,您可以使用
mapv

user> (mapv + [1 2 3 4] [10 20 30 40] [100 200 300 400])
[111 222 333 444]

函数式编程中的特殊并行理解行为通常被描述为“压缩”。一些函数式语言具有单独的“zip”函数,可以与“map”结合使用,而其他语言则提供“zipmap”函数(有时仅称为“map”)。Clojure属于后一种情况。
user> (mapv + [1 2 3 4] [10 20 30 40] [100 200 300 400])
[111 222 333 444]