(免责声明 - 我所知道的Seqs的Clojure中的意义)common lisp cons从两个符号创建一个列表,clojure缺点需要一个seq来提供?
Common Lisp中的利弊功能可用于两个符号组合成一个列表:
(def s 'x)
(def l 'y)
(cons s l)
Clojure中 - 你可以只对一个序列负责 - cons没有扩展到使用两个符号。所以,你必须写:
(def s 'x)
(def l 'y)
(cons s '(l))
有Clojure中的一个更高层次的图案,说明Common Lisp的Clojure的和之间的差异?
我一直在Clojure编程一点,甚至没有意识到这一点!如果你声称是正确的,这是一个很好的问题:) – 2010-07-11 11:04:00
请注意,使用'conj'通常比'cons'更好。有关更多详细信息,请参阅我对此问题的回答(以及由cgrand发表的评论):http://stackoverflow.com/questions/3008411/clojure-seq-cons-vs-list-conj(实际上,该答案也解释了在Clojure中'cons'的功能与传统的Lisp'cons'在一定程度上相反。) – 2010-07-11 12:01:54
您的第一个示例不是列表,它是一对。一对(a。b)与两个元素(ab)的列表不同,它恰好是这一对(a。(b。nil)) – Zorf 2010-07-12 05:26:45