关闭(应用str)问题?

pro*_*eek 5 clojure

随着关闭

(apply str [\a \b])
Run Code Online (Sandbox Code Playgroud)

(apply str '(\a \b))
Run Code Online (Sandbox Code Playgroud)

返回"ab".

(apply str (\a \b))
Run Code Online (Sandbox Code Playgroud)

返回错误.

这是为什么?

Ale*_*art 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))