; 1.) Write the procedure so that it is in tail position. (You may need a helper function) ; 2.) Convert the function into CPS (define (filter pred list) (cond [(null? list) '()] [(pred (car list)) (cons (car list) (filter pred (cdr list)))] [else (filter pred (cdr lst))])) ;one answer: (define (filter pred list) (reverse (filter-helper pred list '()))) (define (filter-helper pred list x) (cond [(null? list) x] [(pred (car list)) (filter-helper pred (cdr list) (cons (car list) x))] [else (filter-helper pred (cdr list) x)])) ;CPS ;one answer (define (filter-cps f l k) (if (null? l) (k '()) (f (car l) (lambda (v) (if v (filter-cps f (cdr l) (lambda (v2) (cons (car l) v2))) (filter-cps f (cdr l) k))))))