(define (my-rotate path)
 (let loop ((path path) (acc '()))
  (if (null? path)
    acc
    (loop (cdr path)
       (cons (rotate-one (car path)) acc)))))
(define (my-inverse path)
(let loop ((path path) (acc '()))
(if (null? path)
(reverse! acc)
(loop (cdr path)
(cons (inverse-one (car path)) acc)))))
例えばこんなんどうでしょ。

1) リストの後に1個ずつ append するループ
2) リストの頭に1個ずつ cons して最後に reverse(!)

1)は効率がとても悪いです。何故でしょう?