Я пытаюсь вернуть переменную в рамках другой среды. То, что у меня есть в настоящее время,
(define make-empty-env
(lambda()
(make-top-level-environment)
)
)
который создает новую среду, когда вы вызываете ее из интерпретатора, т.е. (define env (make-empty-env))
Если я определяю переменную "a" как 15 в "env", моя цель состоит в том, чтобы вернуть это значение через функцию, вызываемую из исходной пользовательской среды.
Что-то в духе
(apply-env env 'v) выводит -> значение переменной v в области env. v может быть неопределенным в исходной среде пользователя, но все равно будет возвращать значение, если переменная существует в env.
Я пробовал:
(define apply-env
(lambda (env v)
(eval (+ v 0) env)
)
)
что не работает, так как я передаю символ 'v при вызове функции. Моя главная проблема в том, что я не знаю, как передать символ и рассматривать его как переменную в функции. Это для домашнего задания, и подсказка для функции:
(применить-env env v)
Возвращает значение переменной v в среде env.
Вот несколько вызовов apply-env:
В тестовой среде a = 1, b = 2
(применить-env test-env 'a) 1
(применить-env test-env 'b) 2
Я относительно новичок в схеме, поэтому мне, вероятно, не хватает некоторых фундаментальных основ, любые указатели или помощь будут очень признательны.