随笔分类 -  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 阅读全文
posted @ 2014-02-12 14:23 valleylord 阅读(575) 评论(0) 推荐(0)
摘要:我使用的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... 阅读全文
posted @ 2014-02-07 19:55 valleylord 阅读(1317) 评论(0) 推荐(0)