(define (reduce-right f lst) (if (null? (cdr lst)) (car lst) (f (car lst) (reduce-right f (cdr lst))))) (define (reduce-left f lst) (reduce-help-left f (cdr lst) (car lst))) (define (reduce-help-left f lst res) (if (null? lst) res (reduce-help-left f (cdr lst) (f res (car lst))))) (define (accumulate-right f init lst) (if (null? lst) init (f (car lst) (accumulate-right f init (cdr lst)))))