Здесь есть несколько проблем.Сначала вы добавляете список и атом (не список) ... по крайней мере, если (car l2)
не является списком.Во-вторых, вы, вероятно, думаете, что (append l1 (list (car l2))
изменяет l1
.Но это не так.Результатом является новый список.
Чтобы упорядочить свою операцию, вы можете сделать, как сказал Ларсман.Но вы также можете написать следующее
(define (test l1 l2)
(if (null? l2)
(displayln l1)
(let ((l1-follow-by-car-l2 (append l1 (list (car l2)))))
(test l1-follow-by-car-l2 (cdr l2)) ))
Это поведение точно такое же.