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

标签 macros scheme guile r5rs

我正在使用 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/

相关文章:

scheme - 如何在方案中将数字分解为整数和小数部分?

scheme - 这个方案错误告诉我什么?

c - 如何使用可选的 GNU guile 库 ("--with-guile"来配置.ac)

string - 在 Julia 中将变量名保存为字符串

c、if语句不能正常工作

objective-c - ObjC 宏 ifdef 和定义

c - 通过带有类型通知的宏重载 C 中的运算符

lambda - 在 Racket 中使用 lambda 进行迭代?

scheme - 如何以不平凡的方式组合两个生成器

scheme - 如何检查符号是否是过程