Clojure:如何将cons转换为list

Duo*_*hat 1 clojure

(cons 1 (list 2 3))返回一个clojure.lang.cons.我该怎么把它转换成clojure.lang.PersistentList

cor*_*ump 10

而不是调用cons并尝试转换结果,使用conj:

(conj (list 2 3) 1)
=> (1 2 3)

(type (conj (list 2 3) 1))
=> clojure.lang.PersistentList
Run Code Online (Sandbox Code Playgroud)


Thu*_*ail 6

Clojure:如何将cons转换为list

别!

Clojure建立在可扩展的抽象之上.其中最重要的是序列.

我可以想到你没有理由想要将a转换cons为a list或反之亦然.它们都是序列而不是其他任何东西.你可以用另一个人做什么.


以上内容提出了Leetwinski对这个问题的评论.

  • 我广泛同意你的答案(并且认为这是最好的产品),但是肯定有理由想要列出一个序列:例如,列表知道它们的计数,而对于一般序列,计数函数可能需要任意数量时间 但是,对于不知道如何将序列转换为列表的人来说,很难想象他们实际上需要一个列表. (3认同)