reverse sans append
Comme promis voici une réalisation de la procédure reverse qui ne fait pas appel à la procédure append. En outre elle est itérative.
(define (mon-reverse L)
(define (epuise L dest)
(if (null? L)
dest
(epuise (cdr L) (cons (car L) dest))))
(epuise L '()))
Ou encore :
(define (reverseb L)
(let iter ((RL '())
(L L))
(if (null? L)
RL
(iter (cons (car L) RL)
(cdr L)))))
Ou bien encore :
(define (mon-reverse L)
(letrec ((epuise
(lambda (L dest)
(if (null? L)
dest
(epuise (cdr L) (cons (car L) dest))))
))
(epuise L '())))