macros - 使用宏创建新标识符

标签 macros scheme r5rs

我想要一个创建新标识符的宏,例如

(new-name first second) => first-second

可用于定义新的顶级绑定(bind)
(define-syntax define-generic 
  (syntax-rules ()
    ((define-generic (name a b ...))
     (begin
       (define (new-name name data) 15)      ; <= create a new binding
       (define name (lambda (a b ...)
         (add (new-name name-data) 7))))))   ; <= use new identifier

如果我设置! “new-name”绑定(bind)的值,那么它应该会影响新创建的过程。

最佳答案

就在几天前,Reddit 上对此进行了讨论。可能值得研究发布的实现以获取更多详细信息 - http://www.reddit.com/r/scheme/comments/f54dk/i_wrote_an_hygienic_definemacro_that_can_capture/

关于macros - 使用宏创建新标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828109/

相关文章:

c - token 粘贴前如何在宏参数中操作?

compiler-construction - 是否有针对不同 "RnRS"方案标准的摘要?

recursion - The Little Schemer Evens-only*&co

lisp - Scheme中 `define`的返回值是多少?

lambda - R5RS Scheme 中是否有使用 "λ"字符作为 "lambda"的宏?

macros - 旁边不需要空格的 Clojure 宏

c - 数字常量之前的预期说明符限定符列表

重新定义 C 宏

lisp - DrRacket 中的简单嵌套评估

scheme - 需要解释 Lisp 中的反向科学记数法函数