【问题标题】:How to convert '( '(...) '(...) ... ) to [ [...] [...] ... ] in Clojure?如何在 Clojure 中将 '( '(...) '(...) ... ) 转换为 [ [...] [...] ... ]?
【发布时间】:2014-11-03 02:01:37
【问题描述】:

如何在 Clojure 中将 '( '(...) '(...) ... ) 转换为 [ [...] [...] ... ]?

我有一个嵌套列表

(def a '( '(1 2 3 4) '(:a :b :c :d) )

我想得到这样的结果:

[ [1 2 3 4] [:a :b :c :d] ]

但是当我尝试使用时,但是内部元素仍然是一个列表而不是一个向量:

(map vec a)
;;output is ([quote (1 2 3 4)] [quote (:a :b :c :d)] )

但我输入的是 REPL:

(vec '(1 2 3 4))
;; output is [1 2 3 4]

【问题讨论】:

  • 为什么有内引号?您没有列表列表,您有引用列表的列表。
  • 是的,我不应该引用内部列表。

标签: list vector clojure


【解决方案1】:

您不必引用子列表。

(def a '((1 2 3 4) (:a :b :c :d)))

你可以使用mapv,它类似于map,但是返回一个向量而不是一个惰性序列

(mapv vec a)

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 2020-11-05
    • 2013-11-14
    • 1970-01-01
    • 2011-08-03
    • 2019-07-29
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多