;; IN: a list, possibly deep, a function ;; OUT: list results from applying funct to every deep-element (define (deep-map fn ls) (cond ((null? ls) '()) ((atom? ls) (fn ls)) ;; EXTRA (else (cons (deep-map fn (car ls)) ;; EXTRA (deep-map fn (cdr ls)))))) (define (map fn ls) (cond ((null? ls) '()) (else (cons (fn (car ls)) (map fn (cdr ls)))))) ;; map version (define (deep-map fn ls) (cond ((null? ls) '()) ((atom? ls) (fn ls)) ;; EXTRA (else (map (lambda (l) (deep-map fn l)) ls))))