- 表达式
(+ 123 456)
(* 2 10)
……
像这样的称为组合式
而把运算符放在最左边的这种形式称为前缀表示,前缀表示的优点在于可以带有任意参数,而且参数也可以是组合式,这样就可以嵌套 - 命名和环境
define,最简单的抽象方法,用于关联(定义)一个名字与其值
可以实现将复杂的过程进行抽象
当我们使用define对值和符号进行关联的时候,我们可以使用这个符号去取出它的值,这个时候,意味着解释器必须有相应的存储能力,这种存储称之为环境(全局环境) - 组合式的求值
过程:1.求值该组合式的各个子表达式;2.将最左子表达式,即运算符,作用于对应的参数,即其它子表达式的值
环境所扮演的角色就是确定表达式中各个符号的意义
define的作用是为符号关联一个值,因此(define x y)并非组合式,属于一种特殊形式 - 复合过程
过程定义
(define (<name> <formal parammeters>) <body>)
- 过程应用的代换模型
归约:可以理解为求值过程,或者替换
分为** 应用序 和 正则序 **
** 应用序 **:先归约再展开,效率更高
** 正则序 **:完全展开再进行归约 - 条件表达式
** cond **:直到遇到为真的条件
** if **:为真时选择前者,否则选后者
** and **:从左至右,遇到假则为假,否则为最后一个值
** or **:从左至右,遇到真则为这个值,否则为假
** not **:非 - 牛顿法求平方根
利用递归的思想,不断逼近 - 过程作为黑盒抽象
将复杂的过程集中,无需理会其中的处理,只需要知道其得出的结果,是一种抽象过程,隐藏细节
** 局部名 **:不用关心形式参数的名字,过程参数名局部于有关的过程体
** 内部定义和块结构 **:过程的形式参数是相应过程体里的局部名字,块结构,可以在过程里带有内部定义,这些内部定义是局部于这一过程的
网友评论