Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables PLT方案-跟踪环境变量绑定_Variables_Binding_Scheme_Environment_Racket - Fatal编程技术网

Variables PLT方案-跟踪环境变量绑定

Variables PLT方案-跟踪环境变量绑定,variables,binding,scheme,environment,racket,Variables,Binding,Scheme,Environment,Racket,我正在尝试创建一个简单的语言解释器,用于PLT方案(Racket)中的家庭作业。对于跟踪变量绑定,我似乎无法创建和更新跟踪指定变量及其值的环境。在MIT Scheme参考中,我找到了关于环境是一类对象的信息,但是使用此处列出的命令(例如环境绑定?)在PLT Scheme中不起作用 不使用let或任何命令式(!)功能实现此方案的最佳方法是什么 在文档中查找任何相关信息。如果您只是在Scheme中创建一个解释器,您可能只想创建自己的环境数据结构,可能是一个关联列表:((var1 val1)(var2

我正在尝试创建一个简单的语言解释器,用于PLT方案(Racket)中的家庭作业。对于跟踪变量绑定,我似乎无法创建和更新跟踪指定变量及其值的环境。在MIT Scheme参考中,我找到了关于环境是一类对象的信息,但是使用此处列出的命令(例如环境绑定?)在PLT Scheme中不起作用


不使用let或任何命令式()功能实现此方案的最佳方法是什么

在文档中查找任何相关信息。

如果您只是在Scheme中创建一个解释器,您可能只想创建自己的环境数据结构,可能是一个关联列表:
((var1 val1)(var2 val2)(var3 val3))
等等。将环境作为一个列表进行传递和更新比处理任何特定方案的环境实现更简单。

我很感激这个链接,因为它无疑会在将来帮助我。然而,任何对名称空间相关过程的调用都会导致PLT方案出现“引用未定义的标识符:[过程名称]”错误。显然,创建自己的解释器与使用Racket名称空间非常不同!您可能希望使用任何适合此工作的数据结构,如上面提到的alists或哈希表,或任何数量的其他解决方案。当你想做一些反思性的工作时,你可以使用名称空间——比如定义一种基于Racket的新语言(这恰好是一种非常容易实现的语言)。我今天早些时候完成了这个问题,这就是我提出的解决方案。