有人能解释一下Clojure';用简单的话来说是什么意思?

有人能解释一下Clojure';用简单的话来说是什么意思?,clojure,Clojure,我正在努力理解一些使用非引用拼接的Clojure宏,但我似乎找不到它们所需要的任何明确解释。有人能用虚拟的术语向我解释一下吗?我不是Clojure方面的专家,但因为它基本上是一个Lisp,所以应该像unquote拼接就是unquote,它将列表合并到使用它的位置。区别如下: `(1 2 ~(list 3 4)) => (1 2 (3 4)) `(1 2 ~@(list 3 4)) => (1 2 3 4) ` == syntax-quote ~ == unquote

我正在努力理解一些使用非引用拼接的Clojure宏,但我似乎找不到它们所需要的任何明确解释。有人能用虚拟的术语向我解释一下吗?

我不是Clojure方面的专家,但因为它基本上是一个Lisp,所以应该像unquote拼接就是unquote,它将列表合并到使用它的位置。区别如下:

`(1 2 ~(list 3 4))   =>  (1 2 (3 4))
`(1 2 ~@(list 3 4))  =>  (1 2 3 4)

`  == syntax-quote
~  == unquote
~@ == unquote-splice

啊,这么说,不加引号的拼接只是平铺了一个列表?@Zubair:是的。还要注意的是,在CLojure中,使用了
~
(tilde)而不是
(逗号)。@friend:`(作为喜欢闭包变化的人,(n(随机2)'(很多)我很惊讶他们使用
~
(tilde)而不是传统的
(逗号)-知道为什么会改变吗?)@巴尔杜尔:可能有两个原因。首先,逗号可能被认为是不具描述性和易混淆的-引号与自然语言中的引号做的事情完全相同-引号符号(语言术语中的标记表示),但逗号做的事情与它在语言中的含义大不相同。所以把它改成别的东西是有意义的。第二个更重要的原因是,出于可读性目的,Clojure允许在有意义的地方使用逗号而不是空格,因此不能用作
eval
的快捷方式。