Код Ревью
Сравни свои решения
;Реализация хвостовой рекурсией
(define (reversed list)
(define (iter list-1 list-2)
(if (null? list-1)
list-2
(iter (cdr list-1) (cons (car list-1) list-2))))
(iter list '() ))
(define (fold-left f x0 list)
(define (iter accum l)
(if (null? l)
accum
(iter (f accum (car l)) (cdr l))))
(iter x0 list))
(define (fold-right f x0 list)
(define (iter accum l)
(if (null? l)
accum
(iter (f (car l) accum) (cdr l))))
(iter x0 (reversed list)))
;Реаллизация нехвостовой рекусрсией
(define (foldr-rec f x0 list)
(if (null? list)
x0
(f (car list) (foldr-rec f x0 (cdr list)))))
;Лев и прав свертка равны, при условиях ассоциативности и коммутативности операции (на общем типе вспомогательного списка и начального значения)
;Пусть А - оперируемый общ. тип, f - преобразование, е - нейтральный элемент
;Тогда, если (A, f, e) - моноид, то прав и лев свертка дёт одинаковый результат