如何评估包含在闭包内绑定的符号的列表?

时间:2019-01-06 01:39:02

标签: scheme

我希望能够评估一个引用该闭包内符号的列表,但我遇到了无限的变量错误。

(define (test x y lst)
  (eval lst)))

(test 5 3 '(+ x y))

我希望列表中的xy被绑定到测试中xy符号所绑定的位置;但是,这样做会导致错误,提示xy未绑定。

1 个答案:

答案 0 :(得分:0)

如果变量名是固定的,在这种情况下为xy,那么您也可以这样做:

(import (rnrs) (rnrs eval))

(define (test x y lst)
  (eval `(let ((x ,x) (y ,y)) ,lst)
    (environment '(rnrs))))

(test 5 3 '(+ x y))
;; -> 8