我正在学习宏和特别是Clojure宏,我很好奇是否可以做到这样:
(defmacro with-a=hello [f]
`(let [a "hello"] ~f))
(with-a=hello (println a))
这对我不起作用,会抛出错误:CompilerException java.lang.RuntimeException: Can't let qualified name: user/a, compiling:(NO_SOURCE_PATH:1)
据我了解,目前可以使用 scheme 的 define-syntax 来实现类似的功能,但是 Clojure 有没有相应的方法呢?
~'
并不是特定的特殊序列,而只是由~
(保留语法引用)和'
(开始普通引用)组合而成。 - amalloy