The function append, which is a standard Scheme function, concatenates two or more lists. Let us here show a version which appends two lists:
(define (my-append lst1 lst2) (cond ((null? lst1) lst2) (else (cons (car lst1) (my-append (cdr lst1) lst2)))))
We will now challenge ourselves by programming an iterative solution, by means of tail recursion. We start with the standard setup:
(define (my-next-append lst1 lst2) (my-next-append-1 lst1 lst2 ...))
where my-next-append-1 is going to be the tail recursive function:
(define (my-next-append-1 lst1 lst2 res) (cond ((null? lst1) ...) (else (my-next-append-1 (cdr lst1) lst2 ...))))
Fill out the details, and try out your solution.
You may encounter a couple of problems! Do your best to work around these problems, maybe by changing aspects of the templates I have given above.