; Continuation-passing style examples (define fact-cps (lambda (n k) (if (zero? n) (k 1) (fact-cps (sub1 n) (lambda (fact-n-1) (k (* n fact-n-1))))))) (define list-copy (lambda (list) (list-copy-cps list (lambda (x) (display "The copied list is ") x)))) (define list-copy-cps (lambda (L k) ; (if (null? L) (k '()) (list-copy-cps (cdr L) (lambda (copied-cdr) (k (cons (car L) copied-cdr))))))) (define intersection-cps (lambda (los1 los2 k) (if (null? los1) (k '()) (intersection-cps (cdr los1) los2 (lambda (v) (memq-cps (car los1) los2 (lambda (memq) (k (if memq (cons (car los1) v) v))))))))) (define memq-cps (lambda (sym ls k) (cond[(null? ls) (k #f)] [(eq? sym (car ls)) (k #t)] [else (memq-cps sym (cdr ls) k)])))