Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

reverse sans append
Article mis en ligne le 18 novembre 2005
dernière modification le 13 juillet 2012

par Laurent Bloch

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.

  1. (define (mon-reverse L)
  2.   (define (epuise L dest)
  3.     (if (null? L)
  4.         dest
  5.         (epuise (cdr L) (cons (car L) dest))))
  6.   (epuise L '()))

Télécharger

Ou encore :

  1. (define (reverseb L)
  2.    (let iter ((RL '())
  3.               (L L))
  4.       (if (null? L)
  5.           RL
  6.           (iter (cons (car L) RL)
  7.                 (cdr L)))))

Télécharger

Ou bien encore :

  1. (define (mon-reverse L)
  2.   (letrec ((epuise
  3.             (lambda (L dest)
  4.                (if (null? L)
  5.                    dest
  6.                    (epuise (cdr L) (cons (car L) dest))))
  7.             ))
  8.      (epuise L '())))

Télécharger