如何在Clojure中将矢量转换为列表

时间:2016-03-30 03:54:30

标签: clojure

我试过这个

koan-engine.runner=> (map identity [1 2 3])
(1 2 3)
koan-engine.runner=> (type (map identity [1 2 3]))
clojure.lang.LazySeq
koan-engine.runner=> (type '(1 2 3))
clojure.lang.PersistentList

但它看起来像一个列表,实际上它是一个LazySeq,那么如何将矢量转换为列表呢?

2 个答案:

答案 0 :(得分:4)

user=> (apply list [1 2 3])
(1 2 3)
user=> (type (apply list [1 2 3]))
clojure.lang.PersistentList

list会创建一个列表,因此您只需apply将其添加到集合中。

答案 1 :(得分:2)

另一个选项是into

user=> (into '() [1 2 3])
(3 2 1)
user=> (type (into '() [1 2 3]))
clojure.lang.PersistentList
user=> (into '() (reverse [1 2 3]))
(1 2 3)
user=> (type (into '() (reverse [1 2 3])))
clojure.lang.PersistentList

另见Creating a List from an Existing Data Structure - Clojure Cookbook