Clojure 关闭';s(应用str)问题?

Clojure 关闭';s(应用str)问题?,clojure,Clojure,结束 (apply str [\a \b]) 及 返回“ab” 返回一个错误 为什么呢 因为(\a\b)表示“使用\b参数调用函数\a”,并且由于字符\a不是函数,因此失败。请注意以下方面的差异: user=> (+ 1 2 3) 6 user=> '(+ 1 2 3) (+ 1 2 3) 用户=>(+1 2 3) 6. 用户=>'(+1 2 3) (+ 1 2 3) 作为一般规则,如果要编写文字序列,请使用向量而不是引用的列表,因为引用也会停止对列表中的部分的求值,例如: user=> [(

结束

(apply str [\a \b])

返回“ab”

返回一个错误

为什么呢

因为
(\a\b)
表示“使用
\b
参数调用函数
\a
”,并且由于字符
\a
不是函数,因此失败。请注意以下方面的差异:

user=> (+ 1 2 3) 6 user=> '(+ 1 2 3) (+ 1 2 3) 用户=>(+1 2 3) 6. 用户=>'(+1 2 3) (+ 1 2 3) 作为一般规则,如果要编写文字序列,请使用向量而不是引用的列表,因为引用也会停止对列表中的部分的求值,例如:

user=> [(+ 1 2) (+ 3 4)] [3 7] user=> '((+ 1 2) (+ 3 4)) ((+ 1 2) (+ 3 4)) 用户=>[(+12)(+34)] [3 7] 用户=>'(+12)(+34)) ((+ 1 2) (+ 3 4))
我不知道Clojure,但是否可能[]是一个列表,而()是其他东西?@jtbandes:[]是一个向量(就像一个不断增长的数组一样)。()是一个列表,但如果它没有被引用,则会作为函数进行计算。这就是代码是围绕Lisps的数据。 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))