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 '())))