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

时间:2011-08-18 16:41:24

标签: scheme mit-scheme

我只是在使用Scheme(mit-scheme)进行攻击,我刚刚想出了如何改变环境,因此'+'成为' - '运算符的等效过程的符号。

实施例

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

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

(eval <exp> user-initial-environment) 

我不必使用'user-initial-environment'。所以我可以在不同的环境中“玩”一个功能。

(eval <exp> env) 

其中env是附加到我的变量'env'的预定义环境。

1 个答案:

答案 0 :(得分:3)

top-level environments上的相关MIT计划文档页面可能具有指导意义 - 您可以扩展现有的顶级环境(使用extend-top-level-environment)或从头开始创建一个新的环境({{1} }})。

为了评估除了最简单的表达式之外的任何内容,扩展make-top-level-environmentsystem-global-environment(cf 13.2: Environment Variables

可能是有益的。