bien en commutant les deux listes comme ça (commutation de la position de m et l lors de l'appel append récursivement), vous obtiendrez le premier élément de la première liste suivi du premier élément de la deuxième liste, etc.
Si vous ne le souhaitez pas, vous devez conserver l comme premier argument et m
comme second. Ainsi, vous obtenez:
(define (append l m)
(if (null? l) '()
(cons (car l) (append (cdr l) m))))
Bien sûr, cela ne fonctionne pas comme voulu non plus, parce que maintenant vous obtenez seulement la première liste et ne rien est joint en annexe du tout. Ce que vous devez faire est, une fois que la première liste est entièrement ajoutée (une fois l
est vide), vous devez retourner le second comme la queue, comme ceci:
(define (append l m)
(if (null? l) m
(cons (car l) (append (cdr l) m))))
Wow. Dans mon code d'origine, je l'avais retourné, ce qui était encore pire parce que tout le reste. Merci beaucoup. –