;------------ a cps version of reverse. L is an s-list. ; Convert this code to use data-structure continuations. ; and then to imperative style (we'll probably cover imperative style in day 37 or 38 class) (define reverse*-cps (lambda (L k) (if (null? L) (k '()) (reverse*-cps (cdr L) (lambda (reversed-cdr) (if (pair? (car L)) (reverse*-cps (car L) (lambda (reversed-car) (append-cps reversed-cdr (list reversed-car) k))) (append-cps reversed-cdr (list (car L)) k))))))) (define append-cps (lambda (a b k) (if (null? a) (k b) (append-cps (cdr a) b (lambda (appended-cdr) (k (cons (car a) appended-cdr))))))) (define init-k (lambda (v) (display "answer: ") (display v) (newline)))