;; Hilsdale ;; c311/Spring 1996 ;; Solution to assignment 7, the CPS conversion (define dupla-cps (lambda (a ls k) (cond ((null? ls) (k '())) (else (dupla-cps a (cdr ls) (lambda (v) (k (cons a v)))))))) (define duplicate-cps (lambda (n i k) (cond ((zero? n) (k '())) (else (duplicate-cps (sub1 n) i (lambda (v) (k (cons i v)))))))) (define multtup-cps (lambda (tup k) (cond ((null? tup) (k 1)) (else (multtup-cps (cdr tup) (lambda (v) (k (* (car tup) v)))))))) (define intersection-cps (lambda (a b k) (cond ((null? a) (k '())) ((memq (car a) b) (intersection-cps (cdr a) b (lambda (v) (k (cons (car a) v))))) (else (intersection-cps (cdr a) b k))))) (define subst-cps (lambda (new old ls k) (cond ((null? ls) (k '())) ((equal? (car ls) old) (subst-cps new old (cdr ls) (lambda (v) (k (cons new v))))) (else (subst-cps new old (cdr ls) (lambda (v) (k (cons (car ls) v)))))))) (define snoc-cps (lambda (ls i k) (cond ((null? ls) (k (cons i '()))) (else (snoc-cps (cdr ls) i (lambda (v) (k (cons (car ls) v)))))))) (define reverse-it-cps (lambda (ls acc k) (cond ((null? ls) (k acc)) (else (reverse-it-cps (cdr ls) (cons (car ls) acc) k)))))