X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=lists.lisp;h=77b6fa52401157e11b78451156903100a4df6775;hb=042a035d9708f98f43b41ac07171ee0570658c8b;hp=285bb397f426333f8b3eac243144c8704d08eb05;hpb=7fad9c10510187764a6afbe0ac070a68011278b8;p=kmrcl.git diff --git a/lists.lisp b/lists.lisp index 285bb39..77b6fa5 100644 --- a/lists.lisp +++ b/lists.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: lists.lisp,v 1.8 2003/07/05 02:32:08 kevin Exp $ +;;;; $Id: lists.lisp,v 1.9 2003/07/31 07:32:11 kevin Exp $ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -22,13 +22,20 @@ "Make into list if atom" (if (listp obj) obj (list obj))) -(defun filter (fn lst) - "Filter a list by function, eliminate elements where fn returns nil" +(defun map-and-remove-nils (fn lst) + "mao a list by function, eliminate elements where fn returns nil" (let ((acc nil)) (dolist (x lst (nreverse acc)) (let ((val (funcall fn x))) (when val (push val acc)))))) +(defun filter (fn lst) + "Filter a list by function, eliminate elements where fn returns nil" + (let ((acc nil)) + (dolist (x lst (nreverse acc)) + (when (funcall fn x) + (push x acc))))) + (defun appendnew (l1 l2) "Append two lists, filtering out elem from second list that are already in first list" (dolist (elem l2 l1)