(load "/home/rebelsky/Web/Courses/CS151/2007S/Examples/unit-test.scm") (define reverse1 (lambda (lst) (letrec ((kernel (lambda (remaining so-far) (if (null? remaining) so-far (kernel (cdr remaining) (cons (car remaining) so-far)))))) (kernel lst null)))) (define reverse (lambda (lst) (let kernel ((remaining lst) (so-far null)) (if (null? remaining) so-far (kernel (cdr remaining) (cons (car remaining) so-far)))))) (begin-tests!) (test! (reverse null) null) (test! (reverse (list 1 2 3)) (list 3 2 1)) (test! (reverse (list 'a 'b 'c)) (list 'c 'b 'a)) (test-error! (reverse (cons 1 2))) (end-tests!)