代数步进器建模:原理与实践
1. 建模策略选择
在构建代数步进器模型时,有两种策略可供考虑:一种是使用反映编译器和运行时系统跟踪评估状态的构造;另一种是采用其他方式。我们选择前者,主要基于以下两个原因:
- 简化模型:简化模型:与包含显式环境、堆栈、堆等的机器模型相比,简化模型更小且更易于管理。研究界已经了解编译器如何管理变量和值之间的关联,对这方面进行建模只会使定理和证明变得复杂,而没有实际贡献。
- 可推导性:可以从高级语义推导出各种低级机器。这种推导适用于我们的扩展框架,意味着证明可以应用于低级机制的多种实现。
2. 延续标记介绍
延续标记是我们模型的核心概念。可以将程序的延续视为一系列帧,而延续标记是一个包含单个值的独特帧。延续标记帧在评估过程中是透明的,当控制返回到这样的帧时,标记帧会被移除。如果程序向已经标记的延续添加标记(即两个标记连续出现),新标记会替换旧标记,这一规定保留了所有派生实现的尾调用优化。
我们的模型除了包含函数式语言的常用构造外,还引入了两个新的延续操作:
- (with-continuation-mark mark-expr expr) : mark-expr 和 expr 是任意表达式。 mark-expr 计算得到一个标记值,该值被放置在延续顶部的标记帧中。如果当前顶部帧已经有标记,新帧会替换它。最后,计算 expr ,其值成为整个 with-continuation-mark 表达式的结果。
-
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



