第四章 元语言抽象

从这里开始,我们要把自己看做语言的设计者,而不仅仅是别人设计好的语言的的使用者


之前一张讲述的是面对对象编程,这一章开始讲解函数式编程

任何一门语言都不足以满足我们的需要,因而需要转向新的语言,去更有效的表达我们的想法,因为新语言可以使我们以一种完全不同的方式,利用不同的原语,不同的组合方式和抽象方式去描述和思考所面对的问题

元语言抽象就是建立新的语言,我们不仅可以设计语言,还可以通过构造求值器(解释器)去实现这些语言

求值器决定了一门程序设计语言中各种表达式的意义,但它本身不过就是一个过程。处理大规模计算机系统的技术,与构造新的程序设计语言的技术紧密联系,而计算机科学本身不过就是有关如何构造适当的描述语言的学科

元语言求值器

用与被求值的语言同样的语言写出的求值器成为元循环

求值的环境模型包括两个部分

  • 在求值一个组合式时,首先求值其中的子表达式,而后将运算符子表达式的值作用于运算对象子表达式的值
  • 在将一个复合过程应用于一集实际参数时,我们在一个新的环境里求值这个过程的体。构造这一环境的方式就是用一个框架扩充该过程对象的环境部分,框架中包含的是这个过程的各个形式参数与这一过程应用的各个实际参数的约束

这两条规则描述了求值过程的核心部分,也就是它的基本循环。在这一循环中,表达式在环境的求值被归约到过程对实际参数的应用,而这种应用又被归约到新的表达式在新的环境中的求值,直到我们下降到符号(其值可以在环境中找到)或者基本过程(可以直接应用)