鉴于列表:
'( [: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))
这似乎过于复杂;有什么更惯用的方法来实现它?
另外,当尝试在列表中执行这种元素扩展笛卡尔积的事情时,应该考虑哪些函数族?(我完全不知道如何描述它)。