The Lisp function mapcan works much like mapcar, but with a different way of gathering results:
(defun filter (lst predicate)
(mapcan #'(lambda (item)
(if (funcall predicate item)
(list item)
'()))
lst) )
>(filter '(a 2 or 3 and 7) 'numberp)
(2 3 7)
>(filter '(a 2 or 3 and 7) 'symbolp)
(A OR AND)
Contents    Page-10    Prev    Next    Page+10    Index