読者です 読者をやめる 読者になる 読者になる

(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

どうやってベクターのネストを削除したらいい?

Clojure stackoverflow

stackoverflow.com

久しぶりにこういうの書く*1

さて、質問ですが

([[AA ww me bl qw 100] [AA ee rr aa aa 100] [AA qq rr aa aa 90]] [[CC ww me bl qw 100] [CC ee rr aa aa 67]])

このようなデータ構造を持っているときに、次のようなデータの形にしたいとのこと。

([AA ww me bl qw 100] [AA ee rr aa aa 100] [AA qq rr aa aa 90] [CC ww me bl qw 100] [CC ee rr aa aa 67])

一見 flatten で良さそうに見えますが、 flatten を使うと再帰的に平滑化していまうため上記のようになりません。

回答はシンプルなんですが、 concat と apply 組み合わせればいいよとのこと。

(apply concat
  ([[AA ww me bl qw 100] [AA ee rr aa aa 100] [AA qq rr aa aa 90]] [[CC ww me bl qw 100] [CC ee rr aa aa 67]]))

ちなみに僕もこれ似たようなことで Clojure デキルマンに注意されたことあって、そのときは flatten は再帰的に平滑化するから使うない方がいいときもあると教わったんですが、だいたいこれはイディオムぽいので覚えてしまったほうが良さそうですね。

*1:最近、びみょーに忙し…