我试图打印出一个符号列表,我想知道我是否 可以删除引号。
(def process-print-list
(fn [a-list]
(cond (empty? a-list) 'false
(list? a-list) (let [a a-list] (println (first a)) (process-print-
list (rest a) ))
:else (process-print-list (rest a-list) ))))
列表是 ('x 'y 'z))
输出如下:
(quote x)
(quote y)
(quote z)
我只是想让它打印出来:
x
y
z
最佳答案
('x 'y 'z)
是 ((quote x) (quote y) (quote z))
的语法缩写。如果你真的想要一个符号列表(即 (x y z)
),你可能在某处引用了太多。
'(x y z) ;=> (x y z)
'('x 'y 'z) ;=> ((quote x) (quote y) (quote z))
(list 'x 'y 'z) ;=> (x y z)
通常,除非您知道自己在做什么,否则不要使用引号来构建列表。请改用 list
构造函数。
另一方面,在这里我会选择迭代而不是递归。这很好用:
(doseq [sym some-list]
(println sym))
关于clojure - 在 clojure 中打印符号列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460082/