Функция за деструктивно обръщане на списък.
От (1 2 3 4 5) => (5 4 3 2 1).
(define (reverse1 l) (if (null? l) '() (append (reverse1 (cdr l)) (list (car l))) )) (define (reverse! l) (let ((l1 (reverse1 l))) (begin (set-cdr! l (cdr l1)) (set-car! l (car l1)) ) )) (define l (list 1 2 3)) (reverse! l) l