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.
(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的编译器足够聪明,可以折叠生成的表达式,因此它基本上变成了一个常量字符串.