リストを考えると:
'( [:a [:a1 :a2]] [:b [:b1 :b2 :b3]] )
リストを生成するにはどうすればよいですか:
'( [:a :a1] [:a :a1] [:b :b1] [:b :b2] [:b :b3] )
(これは、1 レベルの平坦化と組み合わせた、ある種の要素拡張デカルト積です)
私が思いつくことができる最高のものは次のとおりです。
(apply concat (map #(for [v (second %)] (vector (first %) v)) TheList))
これは非常に複雑に思えます。それを達成するためのより慣用的な方法は何ですか?
また、この種の要素展開デカルト積をリスト内で実行しようとする場合、どの関数ファミリを考慮する必要がありますか? (私はそれをどのように説明するかについて完全に途方に暮れています)。