(defun filter-in (pred the-list) (cond ((null the-list) () ) ((funcall pred (car the-list)) (cons (car the-list) (filter-in pred (cdr the-list))) ) (T (filter-in pred (cdr the-list)) ) ) ) Demo: Break 1 [51]> (filter-in #'evenp '(1 2 3)) (2) Break 1 [51]> (filter-in #'evenp '(1 2 3 4 3)) (2 4) Break 3 [63]> (filter-in #'singletonp '((two) (three four) (5)))) ((TWO) (5)) (defun filter-out (pred the-list) (cond ((null the-list) () ) ((funcall pred (car the-list)) (filter-out pred (cdr the-list)) ) (T (cons (car the-list) (filter-out pred (cdr the-list))) ) ) ) Demo: Break 5 [65]> (filter-out #'singletonp '((two) (three four) (5)))) ((THREE FOUR)) Break 6 [67]> (filter-out #'evenp '(1 2 3 4 3)) (1 3 3) Break 6 [67]> (filter-out #'evenp '(1 2 3)) (1 3)