(define reverse2 (lambda (lst) (letrec ([helper (lambda (ls new) (if (null? ls) new (helper (cdr ls) (cons (car ls) new))))]) (helper lst '())))) (define reverse2! (lambda (lst) (if (null? lst) '() (let loop ([lst lst] [prev '()] [next (cdr lst)]) (set-cdr! lst prev) (if (null? next) lst (loop next lst (cdr next)))))))