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.