在Common Lisp中,相对容易创建一个宏定义的宏。例如,下面这个宏: (defmacro abbrev (short long) `(defmacro ,short (&rest args) `(,',long ,@args))) 这是一个定义宏的宏,因为它会...
我正在尝试用Python编写一个类似Scheme的小语言,以更好地理解Scheme。 问题在于我卡在了语法对象上。我无法实现它们,因为我不太明白它们的作用和工作原理。 为了尝试理解它们,我在DrRacket中玩弄了一下语法对象。 根据我所能找到的信息,评估“#'(+ 2 3)”与评估“'...
我正在尝试理解Julia元编程文档中有关宏卫生的陈述。该文档声称: Julia的宏展开器通过以下方式解决了这些问题。首先,宏结果中的变量被分类为本地变量或全局变量。如果变量被分配(而不是声明为全局变量)、声明为本地变量或用作函数参数名,则将其视为本地变量。否则,它被视为全局变量。然后将本地变...
那么……我是scheme r6rs的新手,正在学习宏。有人能解释一下什么是“卫生”吗? 提前感谢。
当编写一个声明式的(macro_rules!)宏时,我们自动获得了宏卫生。在这个例子中,我在宏中声明了一个名为f的变量,并传入一个标识符f,它会成为一个局部变量: macro_rules! decl_example { ($tname:ident, $mname:ident, ($(...
测试代码: (define-syntax (test-d stx) #'(begin (define (callme a) (writeln a)))) (define-syntax (test-e stx) (datum->syntax stx...