(define (for-each-pair f g pair r)
(define (recur pair)
(cond ((pair? pair) (recur (car pair)) (recur (cdr pair)))
((null? pair) r)
(else (g (f pair) r))))
(recur pair))

末尾再帰とループでかいてみたが・・・
(define (for-each-pair f g pair r)
(define (recur pair)
(cond ((pair? pair) (for-each-pair f g pair r))
((null? pair) r)
(else (g (f pair) r))))
(do ((pair pair (cdr pair)))
((not (pair? pair)) (recur pair))
(recur (car pair))))