scheme - 如何在方案中定义子环境?

标签 scheme mit-scheme

我只是在使用Scheme(mit-scheme),并且我刚刚弄清楚如何更改环境,以便“+”成为“-”运算符的等效过程的符号。

示例

(environment-define user-initial-environment '+ -)
(eval (+ 3 2) user-initial-environment)
=> 1

我只是想知道是否有一种简单的方法来将环境作为变量处理,所以当我将环境输入到 eval 中时,就像这样

(eval <exp> user-initial-environment) 

我不必使用“用户初始环境”。所以我可以在不同的环境中“玩”一个函数。

(eval <exp> env) 

其中 env 是附加到我的变量“env”的一些预定义环境。

最佳答案

相关 MIT 计划文档页面 top-level environments可能很有启发性——您可以扩展现有的顶级环境(使用 extend-top-level-environment )或从头开始创建一个新环境(使用 make-top-level-environment )。

不过,为了评估除了最琐碎的表达式之外的任何内容,扩展 system-global-environment 可能会有所帮助。或user-initial-environment (参见 13.2: Environment Variables )

关于scheme - 如何在方案中定义子环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111001/

相关文章:

recursion - 有人可以解释递归在这些过程中是如何工作的吗

lisp - SICP 练习 2.29 困惑

方案 - 定义列表与符号

macros - `amb` 运算符是宏还是过程?

scheme - Sublime Text 2 with MIT Scheme

lisp - 为什么我收到 "atom?"的未绑定(bind)错误

scheme - 检查参数是列表还是原子

list - 方案/ Racket 中的功能和列表

scheme - 方案中的可变参数函数

functional-programming - 以下函数在Scheme编程语言中的作用是什么