PLT 方案 - 跟踪环境变量绑定
我正在尝试为 PLT 方案(Racket)中的家庭作业创建一个简单的语言解释器。为了跟踪变量绑定,我似乎无法创建和更新跟踪分配的变量及其值的环境。在 MIT Scheme Reference 中,我发现有关环境是第一类对象的信息,但使用那里列出的命令(例如环境绑定?)在 PLT Scheme 中不起作用。
在不使用 let 或任何类似命令式 (!) 功能的情况下实现此目的的最佳方法是什么?
I am attempting to create a simple language interpreter for a homework assignment in PLT Scheme (Racket). For tracking variable bindings, I cannot seem to create and update an environment that tracks assigned variables and their values. In the MIT Scheme Reference, I found information about environments being first class objects, but using the commands listed there (such as environment-bound?) do not work in PLT Scheme.
What is the best way to accomplish this is scheme without using let or any imperative-like (!) functionality?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您只是在Scheme中创建解释器,您可能只想创建自己的环境数据结构,可能作为关联列表:
((var1 val1) (var2 val2) (var3 val3))
等等。将环境作为列表传递和更新比处理任何特定的Scheme 环境实现更简单。If you're just creating an interpreter in Scheme, you might want to just create your own environment data structure, possibly as an association list:
((var1 val1) (var2 val2) (var3 val3))
and so on. It's simpler to pass around and update the environment as a list, rather than dealing with any particular Scheme's implementation of environments.在文档中查找有关命名空间功能的任何内容。
Look up in the docs for anything around namespace functionality.