(define list1 '(1 2 3 4 5 6 7 8))
(define list2 '(9 10))
(append list1 list2) ⇒ (1 2 3 4 5 6 7 8 9 10)
list1 ⇒ (1 2 3 4 5 6 7 8)
list2 ⇒ (9 10)
Thus append re-creates (copies) list1 when
building the new list.
append can be defined as:
(define append
(lambda (list1 list2)
(if (null? list1)
list2
(cons (car list1)
(append (cdr list1) list2)))))