Стандартный способ сторнировать список без добавления - использовать вспомогательную функцию REVAPPEND, например:
(define (reverse x) (revappend x '()))
(define (revappend x y)
(if (null? x)
y
(revappend (cdr x) (cons (car x) y))))
Теперь, если вы хотите реализовать реверс как одну функцию, вы можете использовать LETREC для локального определенияпомощник REVAPPEND, как этот
(define (reverse x)
(let revappend ((x x) (y '()))
...))
Это всего лишь шаблон, с которого можно начать, не стесняйтесь спрашивать, нужна ли вам дополнительная помощь.