Как я могу оценить список, содержащий символы, которые связаны внутри замыкания? - PullRequest
0 голосов
/ 06 января 2019

Я бы хотел иметь возможность оценить список, который ссылается на символы внутри этого замыкания, но я получаю несвязанные ошибки переменных.

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

(test 5 3 '(+ x y))

Я ожидал, что x и y в списке будут связаны с тем, с чем связаны символы x и y в тесте; однако, это приводит к ошибке, говорящей, что x и y не связаны.

1 Ответ

0 голосов
/ 10 января 2019

Если имена переменных фиксированы, в данном случае 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...