Clojure中嵌套的准文本处理规则是什么?
Clojure中的嵌套准队列处理规则是什么?我正在写一个Lisp变体,其中的符号是卫生的(autogensymed)。我用auto gensym开发了单级Quasikote,但我不确定什么时候会有两级或两级以上的嵌套 如何处理带有卫生符号且可嵌套的QuasiquettesClojure中嵌套的准文本处理规则是什么?,clojure,macros,lisp,quasiquotes,Clojure,Macros,Lisp,Quasiquotes,Clojure中的嵌套准队列处理规则是什么?我正在写一个Lisp变体,其中的符号是卫生的(autogensymed)。我用auto gensym开发了单级Quasikote,但我不确定什么时候会有两级或两级以上的嵌套 如何处理带有卫生符号且可嵌套的Quasiquettes 扩张的一般规则是什么? 例如: 我可以推荐Allan Bawden的“Lisp中的准旋转”: 我95%确定Clojure使用了相同的规则,但请尝试Clojure中的示例进行检查。您能给我们展示一个示例,说明您正在尝试什么以
扩张的一般规则是什么? 例如: 我可以推荐Allan Bawden的“Lisp中的准旋转”:
我95%确定Clojure使用了相同的规则,但请尝试Clojure中的示例进行检查。您能给我们展示一个示例,说明您正在尝试什么以及问题在哪里吗?不确定这在Close中是如何工作的,但在scheme和我的lisp中,我只使用语法(let((name(gensym))'(list'(list,name)))(注释不允许转义backquote,所以这里有引号)检查这个问题,您的示例与您的问题之间的关系并不十分清楚。它们都很简单地解析为
a
,并且根本不涉及gensym。
(quasiquote (quasiquote (unquote (quasiquote (unquote (unquote-splice x))))))
(quasiquote (quasiquote (unquote (quasiquote (unquote (unquote x))))))
(def a '(1 2))
``~`~~a