Change find-{,not-}matching-items procedures to call find instead.
authorChris Hanson <org/chris-hanson/cph>
Sun, 15 Apr 2018 08:16:23 +0000 (01:16 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sun, 15 Apr 2018 08:16:23 +0000 (01:16 -0700)
Also eliminate find-unique-{,not-}matching-items procedures which aren't used
and aren't documented.  These are trivially solved with find-tail and any.

src/runtime/list.scm

index 096e691981f7eeb5de92af4f4230818dd9635c58..b5c427cadebfd9beb34812b818d1652ba55ba9d7 100644 (file)
@@ -878,56 +878,14 @@ USA.
                  (error:not-a list? first 'fold-right))
              initial)))))
 \f
-;;;; Generalized list operations
+;;;; Generalized list operations -- mostly deprecated in favor of SRFI-1
 
 (define (find-matching-item items predicate)
-  (let loop ((items* items))
-    (if (pair? items*)
-       (if (predicate (car items*))
-           (car items*)
-           (loop (cdr items*)))
-       (begin
-         (if (not (null? items*))
-             (error:not-a list? items 'find-matching-item))
-         #f))))
+  (find predicate items))
 
 (define (find-non-matching-item items predicate)
-  (let loop ((items* items))
-    (if (pair? items*)
-       (if (predicate (car items*))
-           (loop (cdr items*))
-           (car items*))
-       (begin
-         (if (not (null? items*))
-             (error:not-a list? items 'find-matching-item))
-         #f))))
-
-(define (find-unique-matching-item items predicate)
-  (let loop ((items* items))
-    (if (pair? items*)
-       (if (predicate (car items*))
-           (if (any predicate (cdr items*))
-               #f
-               (car items*))
-           (loop (cdr items*)))
-       (begin
-         (if (not (null? items*))
-             (error:not-a list? items 'find-unique-matching-item))
-         #f))))
+  (find (lambda (item) (not (predicate item))) items))
 
-(define (find-unique-non-matching-item items predicate)
-  (let loop ((items* items))
-    (if (pair? items*)
-       (if (predicate (car items*))
-           (loop (cdr items*))
-           (if (every predicate (cdr items*))
-               (car items*)
-               #f))
-       (begin
-         (if (not (null? items*))
-             (error:not-a list? items 'find-unique-non-matching-item))
-         #f))))
-\f
 (define (count-matching-items items predicate)
   (count predicate items))