假设某处我已经定义了几个符号:printf的符号名和值
#lang racket
(define foo 123)
(define bar '("1" "2" "3"))
我需要一种方法来产生像"foo = 123"
或"bar = '("1" "2" "3")"
的字符串。我写了一个函数:
(define (f2 sy)
(format "~a = ~s" sy (eval sy)))
这个函数在解释器窗口工作得很好。
> (f2 'foo)
"foo = 123"
> (f2 'bar)
"bar = (\"1\" \"2\" \"3\")"
这对我来说非常满意。然而,当我在代码中使用它时,我得到了
foo: unbound identifier;
also, no #%top syntax transformer is bound in: foo
我有一种感觉,我做错了什么。你能否建议正确的方法来解决我的问题?
P.S:我使用DrRacket, version 5.3.1
Asumu Takikawa提出了两种解决方案:写一个宏,但不能在列表中映射,或者引用某个命名空间,如下所示: – skobls 2013-03-10 19:27:46