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?