Voici la fonction Aplatir qui transforme les sous-listes en liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
(defun aplatir (liste)
  (cond
    ((null lst) lst)
    ((listp (car lst)) (append (aplatir (car lst)) (aplatir (cdr lst))))
    ((consp (car lst)) (append (aplatir (car lst)) (aplatir (cdr lst))))
    (T (cons (car lst) (aplatir (cdr lst))))))
Elle fonction a merveille du moment que la sous-liste n'est pas circulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
(aplatir '(a (b (c) (d)) (e f) (g (h)) nil))
(a b c d e f g h)
 
(aplatir '(a b (d . c)))
*** - car: c is not a list
Quelqu'un pourrait m'aider a corriger cette erreur ? Merci