🫓
ネストしたシーケンスを1レベルだけ flatten する
Clojure でネストしたシーケンスを1レベルだけ flatten したい。
3レベルネストした配列
(def three-level-nested-seq
[[[1 2] [3 4]]
[[5 6] [7 8]]
[[9 10] [11 12]]])
;=> [[[[1 2] [3 4]] [[5 6] [7 8]] [[9 10] [11 12]]]]
flatten
は、再帰的にフラット化される
(flatten three-level-nested-seq)
;=> (1 2 3 4 5 6 7 8 9 10 11 12)
flatten-1
のような関数はビルトインでは存在しないので、1レベルだけフラット化したい場合は他の関数を使う
(mapcat identity three-level-nested-seq)
;=> ([1 2] [3 4] [5 6] [7 8] [9 10] [11 12])
(apply concat three-level-nested-seq)
;=> ([1 2] [3 4] [5 6] [7 8] [9 10] [11 12])
個人的には (apply concat x)
のほうが分かりやすいかな。
参考:
Discussion