【问题标题】:PLT Scheme - Tracking environment variable bindingsPLT Scheme - 跟踪环境变量绑定
【发布时间】:2010-11-06 19:06:21
【问题描述】:

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

在不使用 let 或任何命令式 (!) 功能的情况下实现此目的的最佳方法是什么?

【问题讨论】:

    标签: variables binding scheme environment racket


    【解决方案1】:

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

    【讨论】:

    • 我今天早些时候解决了这个问题,这就是我想出的解决方案。
    【解决方案2】:

    在文档中查找有关 namespace functionality 的任何内容。

    【讨论】:

    • 我很感激这个链接,因为它无疑会在未来帮助我。但是,对命名空间相关过程的任何调用也会导致 PLT 方案出错,并出现“对未定义标识符的引用:[过程名称]”
    • 显然,创建自己的解释器与使用 Racket 命名空间有很大不同!您可能希望使用适合该工作的任何数据结构,例如上面提到的 alist 或哈希表,或任何数量的其他解决方案。当你想做反思性工作时,你会使用命名空间——比如在 Racket 上定义一种新的语言基于(恰好是一种使这变得非常容易的语言)。
    猜你喜欢
    • 2017-03-31
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2019-11-14
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多