我希望能够评估一个引用该闭包内符号的列表,但我遇到了无限的变量错误。
(define (test x y lst)
(eval lst)))
(test 5 3 '(+ x y))
我希望列表中的x
和y
被绑定到测试中x
和y
符号所绑定的位置;但是,这样做会导致错误,提示x
和y
未绑定。
答案 0 :(得分:0)
如果变量名是固定的,在这种情况下为x
和y
,那么您也可以这样做:
(import (rnrs) (rnrs eval))
(define (test x y lst)
(eval `(let ((x ,x) (y ,y)) ,lst)
(environment '(rnrs))))
(test 5 3 '(+ x y))
;; -> 8