I would like to reverse a list using cdr, car and cons. Since lists in lisp are asymmetrical (can only insert at the beginning), I am interested on how one would write a procedure to do that without using (append). Please review my code.
(define (reverse l)
(define (aux orig result)
(if (null? orig) result
(aux (cdr orig) (cons (car orig) result))))
(aux l '()))
Is this good enough? Are there better or more efficient ways to do this?