【Programming Languages And Lambda calculi】 1.5 ~ 1.7 上下文规约 赋值函数 符号摘要

文章目录

1.5 上下文中的赋值

如何减少表达式 ((f • t) • f) ?根据 r 关系或者 ↝↝r 关系,这个表达式并不能规约!

直观上看,通过将第一个子表达式根据 (f • t) r t 的规则, ((f • t) • f) 应该被规约到 (t•f) 。但是在r关系的定义中,没有一项是满足 ((f • t) • f) 的。我们只能将类似于 (f • B)(t • B) 格式的表达式规约。换句话说,在 右边的表达式是任意的,但是在左边的表达式必须是 f 或者 t

现在我们将 r关系 用 -->r 扩张,从而支持子表达式的规约:
【Programming Languages And Lambda calculi】 1.5 ~ 1.7 上下文规约 赋值函数 符号摘要
–>r 关系被称为 r关系 的 兼容闭合(compatible closure)译者注:从这篇开始,我找到了一个更合适的词“闭合”来翻译closure,以及更合适的词“规约”来翻译reduction

和r一样, -->r 是一个单步规约的关系,但是它允许任何一个子表达式自身规约。用r关系规约后的子表达式被称为 redex ,包裹redex的文本被称为上下文(context)。

–>r 关系包括 ((f • t) • f) -->r (t • f) ,我们可以用下述的证明树来演示这条结论。
【Programming Languages And Lambda calculi】 1.5 ~ 1.7 上下文规约 赋值函数 符号摘要
并且,继续规约这个表达式,我们最终可以得到 t
【Programming Languages And Lambda calculi】 1.5 ~ 1.7 上下文规约 赋值函数 符号摘要
最后,如果我们定义 ->->r 作为 –>r 的自反-传递闭合,我们可以得到 ((f • t) • f) ->->r t,因此,->->r 是由r生成的自然规约关系(natural reduction relation)。

总结:

单纯的自反闭合 ≍r,等价闭合 ≈r,或是自反-传递闭合 ↝↝r 关系将是无趣的。相反,我们最近感兴趣的将会是兼容闭合 -->r 和它的自反-传递闭合 ->->r , 因为他们对应了典型的赋值概念。另外,–>r 的等价闭合 =r 关联了会产生相同结果的表达式,因此它也很有趣。

练习 1.3

请你解释为什么 (f • ((t • f) • f)) !↝↝r** r t** .

题解:

(f • ((t • f) • f)) r ((t • f) • f) 无法继续规约。

练习 1.4

请你用 -->r 进行规约,证明 (f • ((t • f) • f)) →→r t

题解:

(f • ((t • f) • f)) -->r ((t • f) • f) -->r (t • f) -->r t

1.6 赋值函数

→→r 将我们与赋值的概念拉得更近了。由于 ((f • t) • f) →→r t,我们发现 ((f • t) • f)→→r (t • f) 以及 ((f • t) • f)→→r ((f • t) • f) 同样成立。

在赋值中,我们感兴趣的是 B表达式 到底是 f 还是 t ,任何其他的映射关系都是无关紧要的。为了捕捉到这种赋值的概念,我们将 evalr 关系定义如下:
【Programming Languages And Lambda calculi】 1.5 ~ 1.7 上下文规约 赋值函数 符号摘要
这里,我们使用了另一个符号来定义关系,这个特殊的符号是具有暗示性的函数的一种关系,即把每一个元素最多映射到一个元素的关系。我们使用函数表示法,因为 evalr 必须是一个函数,才能让它作为一个求值器而有意义。

练习 1.5

在这些关系中:哪一个是函数?在非函数关系中,找到它关联的两个表达式。

题解:

revalr 是函数。

  • r 不是函数
(t • B1) ≍r B1
(t • B1) ≍r (t • B1)
  • r 不是函数
(t • B1) ≈r B1
(t • B1) ≈r (t • B1)
  • ↝↝r 不是函数
(t • B1) ↝↝r (t • B1)
(t • B1) ↝↝r t
  • r 不是函数
((t • B1) • (t • B1)) →r (t • (t • B1))
((t • B1) • (t • B1)) →r ((t • B1) • t)
  • →→r 不是函数
(t • B1) ↠r (t • B1)
(t • B1) ↠r t
  • =r 不是函数
(t • B1) =r (t • B1)
(t • B1) =r t

1.7 符号摘要

名字 定义 直观定义
_ 表达式语法成员的基础关系 一个单步的没有上下文的规约步骤
→_ _ 关系 关于表达式语法的兼容闭合关系 上下文中的单步
→→_ →_关系 的自反-传递闭合 多数赋值步骤(0或多)
=_ →→_关系 的对称-传递闭合 产出相同结果的同等表达式
eval_ =_关系 严格限定结果的范围 全面完整的赋值函数

第一章 完

上一篇:python学习之数据可视化分析——资料汇总


下一篇:【系统架构】大型网站架构演化历程(上)