Rewrite FIND using SATISFIES-TEST-P
authorOwen Rodley <Strigoides@gmail.com>
Sat, 18 May 2013 03:26:43 +0000 (15:26 +1200)
committerOwen Rodley <Strigoides@gmail.com>
Sat, 18 May 2013 03:26:43 +0000 (15:26 +1200)
src/sequence.lisp

index 8d2701b..2fe5108 100644 (file)
              (let ((,elt (aref ,nseq ,index)))
                ,@body))))))
 
-(defun find (item seq &key key (test #'eql))
-  (if key
-      (do-sequence (x seq)
-        (when (funcall test (funcall key x) item)
-          (return x)))
-      (do-sequence (x seq)
-        (when (funcall test x item)
-          (return x)))))
+(defun find (item seq &key key (test #'eql testp) (test-not #'eql test-not-p))
+  (do-sequence (x seq)
+    (when (satisfies-test-p item x :key key :test test :testp testp
+                            :test-not test-not :test-not-p test-not-p)
+      (return x))))
 
 (defun find-if (predicate sequence &key key)
   (if key