关闭
(apply str [\a \b])
和
(apply str '(\a \b))
返回“ab”。
(apply str (\a \b))
返回错误。
为什么?
答案 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))