Completed 2.38
This commit is contained in:
parent
478ae538a9
commit
32fd86edcb
|
@ -0,0 +1,21 @@
|
||||||
|
(define (fold-right op initial sequence)
|
||||||
|
(if (null? sequence)
|
||||||
|
initial
|
||||||
|
(op (car sequence)
|
||||||
|
(fold-right op initial (cdr sequence)))))
|
||||||
|
|
||||||
|
(define (fold-left op initial sequence)
|
||||||
|
(define (iter result rest)
|
||||||
|
(if (null? rest)
|
||||||
|
result
|
||||||
|
(iter (op result (car rest))
|
||||||
|
(cdr rest))))
|
||||||
|
(iter initial sequence))
|
||||||
|
|
||||||
|
; fold-left and fold-right equal if op is commutative
|
||||||
|
|
||||||
|
(define (reverse-r sequence)
|
||||||
|
(fold-right (lambda (x y) (append y (list x))) '() sequence))
|
||||||
|
|
||||||
|
(define (reverse-l sequence)
|
||||||
|
(fold-left (lambda (x y) (append (list y) x)) '() sequence))
|
Loading…
Reference in New Issue