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))