假設某處我已經定義了幾個符號: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