主要内容
高阶过程:以过程为参数和/或返回值的过程
lambda 表达式
let 表达式
用过程作为解决问题的通用方法
求函数的 0 点
求函数的不动点
返回过程值
过程是语言里的一等公民 (first-class object)
1.3.1高阶过程
过程是抽象,一个过程描述了一种对数据的复合操作,如求立方过程:(define (cube...
分类:
其他好文 时间:
2014-09-14 18:03:27
阅读次数:
277
主要内容:
表达式,值,define
l 过程的内部定义和块结构(上述示例已经解释)
l 分析过程(静态,描述)产生的计算进程(动态,行为)
l 计算进程的类型
Ø 线性递归
Ø 线性迭代
Ø 树形递归
l 计算的代价...
分类:
其他好文 时间:
2014-09-13 17:22:45
阅读次数:
229
有段时间没看这本书了.
而且在做笔记的时候产生了一些疑问,觉得这样照着书做笔记没什么意义.于是乎,改变了一下做法.改成先提出疑问,记下重点,然后结合实际案例学习相关东西,最后附上题解,
ok,下面就是第一次的笔记.(依旧是旧套路的)
本节内容
l 讨论基本的Scheme语法规则l 过程的定义l 代换模型l 条件表达式和谓词l 过程抽象l 与C语言比较
程序设计...
分类:
其他好文 时间:
2014-09-10 15:54:00
阅读次数:
358
解:1.45 从理论上不好证,得做试验,初步的想法是通过做试验找出计算n次方根需要计算平均阻尼的次数,找出规律,暂时未写 1.46 (define?(iterative-improve?good-enough??improve)
??(define?(try?x)
??...
分类:
其他好文 时间:
2014-08-31 01:43:50
阅读次数:
212
解:1.40 (define?(cubic?a?b?c)
??(lambda?(x)?(+?(*?x?x?x)?(*?a?x?x)?(*?b?x)?c))) 1.41 (define?(double?f)
??(lambda?(x)?(f?(f?x)))) (double double) => (double (double f)...
分类:
其他好文 时间:
2014-08-30 19:15:41
阅读次数:
205
解:1.37 (define?tolerance?0.00001)
(define?(average?x?y)
??(/?(+?x?y)?2.0))
(define?(fixed-point?f?first-guess)
??(define?(close-enought??v1?v2)
????(<?(abs?(-?v1?v2)...
分类:
其他好文 时间:
2014-08-28 01:01:08
阅读次数:
238
SICP 习题1.44 要求我们实现一个平滑函数的过程,和以往一样,如果你太在意平滑函数的数学定义你就输了。简单的办法就是直奔平滑函数的要求,其实就是给我们一个不清楚细节的函数f,要求我们返回一个过程专门计算(f (+ x dx)) , (f x) , (f (- x dx))的平均值。其中dx是事先定义好的一个很小的数,比如0.001。这就比较简单了,直接实现如下:(define (smooth...
分类:
其他好文 时间:
2014-08-24 19:26:42
阅读次数:
224
解:1.31 (define?(add-1?x)
??(+?x?1))
(define?(product?term?a?next?b)
??(if?(>?a?b)
??????1
??????(*?(term?a)?(product?term?(next?a)?next?b))))
(define?(prod...
分类:
其他好文 时间:
2014-08-23 15:28:31
阅读次数:
199
默认的Racket是要对函数参数进行求值的, 例如(f 1 (+ 1 2))里面,(+ 1 2)要先求值为3,变为(f 1 3)再进行下一步操作.因此, Racket若按照SICP使用define关键字来定义延时计算的关键函数delay和cons-stream是不可行的, 需要用宏来定义,绕过求值....
分类:
其他好文 时间:
2014-08-22 23:44:19
阅读次数:
239
解:代码如下 (define?(sum?term?a?next?b)
??(if?(>?a?b)
??????0
??????(+?(term?a)?(sum?term?(next?a)?next?b))))
(define?(add-1?x)
??(+?x?1))
(define?(sum-iter...
分类:
其他好文 时间:
2014-08-22 00:27:35
阅读次数:
202