(define cclosures (lambda (values) (cond ((null? values) '()) (else (cons (lambda (x) (* (car values) x)) (cclosures (cdr values))))))) (define cclosures2 (let ((val -1)) (lambda (values) (cond ((null? values) '()) (else (begin (set! val (car values)) (cons (lambda (x) (* val x)) (cclosures2 (cdr values))))))))) (define clprint (lambda (closures) (map (lambda (fn) (fn 2)) closures))) > (clprint (cclosures '(0 1 2))) (0 2 4) > (clprint (cclosures2 '(0 1 2))) (4 4 4)