Bonjour,

Envoyé par
Bolboaa
Voici la fonction Aplatir qui transforme les sous-listes en liste :
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

Donc si je comprend bien les exemples, tu souhaites une version qui ne supprimerai pas les valeurs nil, et qui supporterai les paires ou listes pointées
1 2 3 4 5 6 7 8
| (defun aplatir (l)
(if l
(cond ((atom l) (list l))
((atom (car l)) (cons (car l) (aplatir (cdr l))))
(T (append (aplatir (car l)) (aplatir (cdr l))))
)
)
) |
(aplatir '(1 2 nil (2 4 nil) 3 . 4)) => (1 2 nil 2 4 nil 3 4)
A+
Partager