是否可以只打印传递给Scheme宏的字符串?

chu*_*tar 3 macros scheme guile r5rs

我正在研究一个guile方案中的语言翻译器,并且需要处理基本情况,你试图转换单个单词.

(define var 5)
(translate var)
Run Code Online (Sandbox Code Playgroud)

这应该返回字符串var而不是数字5.
如何使用R5RS Scheme宏(define-syntax样式)执行此操作?

编辑:
我正在从Scheme转换为Coffeescript.

Eli*_*lay 5

(define-syntax translate
  (syntax-rules ()
    [(_ v) 'v]))
Run Code Online (Sandbox Code Playgroud)

如果你想要一个字符串:

(define-syntax translate
  (syntax-rules ()
    [(_ v) (symbol->string 'v)]))
Run Code Online (Sandbox Code Playgroud)

希望Guile的编译器足够聪明,可以折叠生成的表达式,因此它基本上变成了一个常量字符串.