SICP 习题2.38 fold-left fold-right

来源:互联网 发布:成都cnc编程招聘 编辑:程序博客网 时间:2024/06/07 19:20

要使fold-left和fold-right达到同样的结果,要求op对操作顺序无关,譬如+

(define (accumulate op initial sequence)  (if (null? sequence)    initial    (op (car sequence)        (accumulate op initial (cdr sequence)))))(define fold-right accumulate)(define (fold-left op initial sequence)  (define (iter result rest)    (if (null? rest)      result      (iter (op result (car rest))            (cdr rest))))  (iter initial sequence))(newline)(display (fold-right / 1 (list 1 2 3)))(newline)(display (fold-left  / 1 (list 1 2 3)))(newline)(display (fold-right list '() (list 1 2 3)))(newline)(display (fold-left  list '() (list 1 2 3)))(newline)(display (fold-right + 0 (list 1 2 3)))(newline)(display (fold-left + 0 (list 1 2 3)))
0 0
原创粉丝点击