Design Pattern: Tail Recursion on List

We can specialize our previous tail-recursive design pattern for use with lists: (define (myfun lst)
         (myfunb lst initanswer))

(define (myfunb lst answer)
         (if (pair? lst)
                 (myfunb (cdr lst)
                         (combine (car lst) answer ))
                 answer ))

This pattern can be used for a tail-recursive implementation of length:


(define (length2 lst) (length2b lst 0))

(define (length2b lst n) (if (pair? lst) (length2b (cdr lst) (1+ n)) n) )

Contents    Page-10    Prev    Next    Page+10    Index