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

Sha*_*ang 2 list vector clojure

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

我有一个嵌套列表

(def a '( '(1 2 3 4) '(:a :b :c :d) )
Run Code Online (Sandbox Code Playgroud)

我想得到这样的结果:

[ [1 2 3 4] [:a :b :c :d] ]
Run Code Online (Sandbox Code Playgroud)

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

(map vec a)
;;output is ([quote (1 2 3 4)] [quote (:a :b :c :d)] )
Run Code Online (Sandbox Code Playgroud)

但我键入REPL:

(vec '(1 2 3 4))
;; output is [1 2 3 4]
Run Code Online (Sandbox Code Playgroud)

tur*_*ete 6

您不必引用子列表.

(def a '((1 2 3 4) (:a :b :c :d)))
Run Code Online (Sandbox Code Playgroud)

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

(mapv vec a)
Run Code Online (Sandbox Code Playgroud)