Completed 2.38

This commit is contained in:
Oliver Payne 2021-10-29 22:24:36 +01:00
parent 478ae538a9
commit 32fd86edcb
1 changed files with 21 additions and 0 deletions

21
2_38.sch Normal file
View File

@ -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))