Clojure:为什么要说"使用错误的东西"

Arn*_*aud 8 clojure flatten

自从我开始Clojure以来,我已经多次阅读过这种事情了.

例如,这里:如何将地图转换为序列?

在一些推文中,我不记得确切地说这或多或少说"如果你正在使用扁平,你可能做错了".

我想知道,flatten有什么问题?

Yos*_*ark 5

我认为这就是他们在你联系的答案中所说的:

so> ((comp flatten seq) {:a [1 2] :b [3 4]})
(:b 3 4 :a 1 2)
so> (apply concat {:a [1 2] :b [3 4]})
(:b [3 4] :a [1 2])
Run Code Online (Sandbox Code Playgroud)

展平将从键和值中删除结构,这可能不是您想要的.在某些用例中,您确实希望删除嵌套序列的结构,并且为此类情况编写了flatten.但是对于地图的解构,您通常希望保持内部序列不变.