我正在使用 guile 方案开发语言翻译器,并且需要处理基本情况,即您尝试转换单个单词。
(define var 5)
(translate var)
这应该返回字符串 var
而不是数字 5
。
如何使用 R5RS Scheme 宏(define-syntax
样式)执行此操作?
编辑:
我正在从 Scheme 翻译成 Coffeescript。
最佳答案
(define-syntax translate
(syntax-rules ()
[(_ v) 'v]))
如果你想要一个字符串:
(define-syntax translate
(syntax-rules ()
[(_ v) (symbol->string 'v)]))
希望 Guile 的编译器足够聪明,可以折叠生成的表达式,使其本质上成为一个常量字符串。
关于macros - 是否可以只打印传递给 Scheme 宏的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526866/