#lang racket (define L '(1 2 3 4 5 6 7 8 9)) (define (mean1 L) (/ (foldl + 0 L) (length L))) (define (mean2 L) (let ([res (foldr (λ (e acc) ; acc este (suma . len) (let* ([sum-so-far (car acc)] [len-so-far (cdr acc)] [new-sum (+ sum-so-far e)] [new-len (add1 len-so-far)] ) (cons new-sum new-len) )) (cons 0 0) L)]) (/ (car res) (cdr res)))) (define (composite-fold f1 f2 v01 v02) (λ (L) (foldr (λ (e acc) (cons (f1 e (car acc)) (f2 e (cdr acc)))) (cons v01 v02) L))) (define (selY x y) y) (define (mean3 L) (let ((res ((composite-fold + (compose add1 selY) 0 0) L) )) (/ (car res) (cdr res)))) (mean1 L) (mean2 L) (mean3 L)