;Procedures develoiped in Day 23 calss (define fact (lambda (n) (fact-acc n 1))) (define fact-acc (lambda (n acc) (if (zero? n) acc (fact-acc (- n 1) (* n acc))))) (define print-fact (lambda (n) (fact-cps n (lambda (v) (printf "The factorial of ~s is ~s~n" n v))))) (define fact-cps (lambda (n k) (if (zero? n) (k 1) (fact-cps (- n 1) (lambda (v) (k (* n v))))))) (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 ; intersection of two sets (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 los k) (cond [(null? los) (k #f)] [(eq? sym (car los)) (k #t)] [else (memq-cps sym (cdr los) k)])))