随笔分类 - scheme与函数式编程
摘要:很困惑scheme中的fold-left和fold-right究竟是如何求值的。先看下面的代码> (fold-right / 1 (list 1 2 3))3/2> (fold-left / 1 (list 1 2 3))1/6很明显,对于+和*这种有交换律的运算,这2者的计算结果是没有什么区别的,但是对于-和/这样的没有交换律的运算,区别就很大了。对于上面2个调用,可以分别做如下展开> (fold-right / 1 (list 1 2 3))3/2> (/ 1 (/ 2 (/ 3 1)))3/2> (fold-left / 1 (list 1 2 3))1/6
阅读全文
摘要:我使用的scheme解释器主要是petite chez scheme。解题过程中参考了:http://sicp.readthedocs.org/en/latest/index.html1.1和1.2基本没问题,除非你没看书......1.3(define ( x 0) (sqrt-iter 1.0 x)) ((= x 0) 0) (else -1)))1.8 求立方的procedure cbrt,如下,主要修改了improve和good-enough(define (cbrt x) (cond ((= x 0) 0) (else (cbr...
阅读全文

浙公网安备 33010602011771号