私は次のシーケンスを持っています
(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]
そのための標準機能はありますか? あるいは、そうするための良い慣用的な方法は何ですか?
私は次のシーケンスを持っています
(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]
そのための標準機能はありますか? あるいは、そうするための良い慣用的な方法は何ですか?
clojure-1.4.0 以降を使用している場合は、以下を使用できますmapv
。
user> (mapv + [1 2 3 4] [10 20 30 40] [100 200 300 400])
[111 222 333 444]
お探しの機能はmap
.
(map + [1 2 3 4] [10 20 30 40] [100 200 300 400])
;=> (111 222 333 444)
map
例に示すように、ベクトルではなく、遅延シーケンスを返すことに注意してください。ただし、関数を使用して、レイジー シーケンスを空のベクトルに注ぐことができinto
ます。
(into [] (map + [1 2 3 4] [10 20 30 40] [100 200 300 400]))
;=> [111 222 333 444]
また、(完全を期すために、別の回答に記載されているように)Clojure 1.4.0+では、ベクトル結果を取得するためにmapv
(と同じ引数で)使用できます。map