关闭(应用str)问题?

时间:2010-07-31 02:06:53

标签: clojure

关闭

(apply str [\a \b])

(apply str '(\a \b))

返回“ab”。

(apply str (\a \b))

返回错误。

为什么?

1 个答案:

答案 0 :(得分:14)

因为(\a \b)表示“使用\a”参数调用函数\b,并且因为字符\a不是函数,所以它会失败。请注意以下差异:

user=> (+ 1 2 3)
6
user=> '(+ 1 2 3)
(+ 1 2 3)

作为一般规则,如果要编写文字序列,请使用向量而不是带引号的列表,因为引号也会停止评估列表中的部分,例如:

user=> [(+ 1 2) (+ 3 4)]
[3 7]
user=> '((+ 1 2) (+ 3 4))
((+ 1 2) (+ 3 4))