(define (sum n) (insertl + (intsto n))) (define (insertl f lst) (if (null? lst) (f) (f (car lst) (insertl f (cdr lst))))) (define (insertl2 f lst) (if (= (length lst) 2) (f (car lst) (cadr lst)) (f (car lst) (insertl2 f (cdr lst))))) (define (insertlg f lst start) (if (= (length lst) 1) (f (car lst) start) (f (car lst) (insertlg f (cdr lst) start)))) (define (intsto n) (if (= n 0) null (append (intsto (- n 1)) (list n)))) (define (doubleall lst) (insertlg (lambda (a b) (cons (* 2 a) b)) lst null)) (define (doubleallm lst) (map (lambda (s) (* 2 s)) lst)) (define (filter f lst) (insertlg (lambda (a b) (if (f a) (cons a b) b)) lst null)) (define (map f lst) (insertlg (lambda (a b) (cons (f a) b)) lst null)) (define (mapr f lst) (if (null? lst) null (cons (f (car lst)) (map f (cdr lst)))))