如何在clojure中展平嵌套列表?

Jas*_*ese 2 clojure

我有一个函数返回看起来像这样的结果:

(({:one 1}) ({:two 2} ({:three 3} {:four 4})))
Run Code Online (Sandbox Code Playgroud)

是否有一种简单/惯用/有效的方法将上面的列表展平为一个列表:

({:one 1} {:two 2} {:three 3} {:four 4})
Run Code Online (Sandbox Code Playgroud)
  • 有没有办法将不确定数量的嵌套列表项转换为单个列表?如果能够处理不同级别的嵌套会很好.
  • 或者只是一个map忽略列表级嵌套的函数,并在叶子上运行?
  • 也许我应该在功能级别做一些不同的事情来构建数据?(例如,reduce而不是map)

ama*_*loy 10

虽然您可以使用flatten来修复损坏的嵌套(在大多数情况下,无论如何,取决于您的数据形状如何),最好始终正确地构建列表.尝试询问另一个关于如何避免生成这个愚蠢列表的问题.