【Scheme】元循环求值
摘要:``` #lang scheme (require rnrs/base-6) (require rnrs/mutable-pairs-6) (define (eval exp env) (cond ((self-evaluating? exp) exp) ;自求值 ((variable? exp) (lookup-variable-value exp env)) ;变量 ...
阅读全文
【Scheme】Huffman树
摘要:``` (define (make leaf symbol weight) (list 'leaf symbol weight)) (define (leaf? object) (eq? (car object) 'leaf)) (define (symbol leaf x) (cadr x)) (
阅读全文
【Scheme】符号求导
摘要:思路: 1. 定义一个求导算法, 令其在抽象对象上执行求导操作。 可以由以下规约规则完成: dc/dx=0 dx/dx=1 d(u+v)/dx=du/dx+dv/dx d(uv)/dx=u(dv/dx)+v(du/dx) 2. 对抽象对象进行具体表示。 实现: 首先,让我们假定现在已经有了一些过程,
阅读全文
【Scheme】树结构
摘要:将表作为序列的表示方式,可以推广到元素本身也是序列的序列。例如,我们可以认为对象((1 2) 3 4)是通过(cons (list 1 2) (list 3 4))构造出来的。 这个表包含三个项,其中第一项本身又是一个表(1 2)。因此可以将其看做一个树形结构:根为((1 2) 3 4),有3个子树
阅读全文
【Scheme】序列的操作
摘要:1.序列的表示 序列 序列(表)是由一个个序对组合而成的,具体来说就是让每个序对的car部分对应这个链的条目,cdr部分则是下一个序对。 对于1 2 3 4这个序列我们可以表示为: 为了方便,上面的序列也可以通过 产生。 表操作 返回表中第n项: n=0,返回表的char n 0,返回表的cdr的第
阅读全文
【Scheme】cons的过程性实现
摘要:(cons x y)实际返回的是一个过程,即内部定义的dispatch,它接收一个参数0或1分别返回x和y。因此,如果z是由(cons x y)产生的过程,(z 0)相当于把0传递给dispatch,就会得到x。(z 1)同理得到y。 (cons x y)返回一个lambda函数,此函数接收一个过程
阅读全文