Implement COUNT-MATCHING-ITEMS and COUNT-NON-MATCHING-ITEMS.
authorChris Hanson <org/chris-hanson/cph>
Thu, 28 Apr 2005 04:33:50 +0000 (04:33 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 28 Apr 2005 04:33:50 +0000 (04:33 +0000)
v7/src/runtime/list.scm
v7/src/runtime/runtime.pkg

index 44db97bf1115fb16ea31f9fab139b867296ae106..7867e17d9c57e8ee22b4252f15984611afcd55b4 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: list.scm,v 14.48 2005/03/29 05:02:11 cph Exp $
+$Id: list.scm,v 14.49 2005/04/28 04:33:36 cph Exp $
 
 Copyright 1986,1987,1988,1989,1990,1991 Massachusetts Institute of Technology
 Copyright 1992,1993,1994,1995,1996,2000 Massachusetts Institute of Technology
@@ -691,6 +691,22 @@ USA.
              (error:not-list items 'FIND-MATCHING-ITEM))
          #f))))
 
+(define (count-matching-items items predicate)
+  (do ((items* items (cdr items*))
+       (n 0 (if (predicate (car items*)) (+ n 1) n)))
+      ((not (pair? items*))
+       (if (not (null? items*))
+          (error:not-list items 'COUNT-MATCHING-ITEMS))
+       n)))
+
+(define (count-non-matching-items items predicate)
+  (do ((items* items (cdr items*))
+       (n 0 (if (predicate (car items*)) n (+ n 1))))
+      ((not (pair? items*))
+       (if (not (null? items*))
+          (error:not-list items 'COUNT-NON-MATCHING-ITEMS))
+       n)))
+
 (define (keep-matching-items items predicate)
   (let ((lose (lambda () (error:not-list items 'KEEP-MATCHING-ITEMS))))
     (cond ((pair? items)
index 9a0404835e4c7d9f4e864fd1fcf67e81634210f4..d8182985570280fe045b08ba23a23ec234677dad 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: runtime.pkg,v 14.540 2005/04/16 04:05:27 cph Exp $
+$Id: runtime.pkg,v 14.541 2005/04/28 04:33:50 cph Exp $
 
 Copyright 1988,1989,1990,1991,1992,1993 Massachusetts Institute of Technology
 Copyright 1994,1995,1996,1997,1998,1999 Massachusetts Institute of Technology
@@ -2122,6 +2122,8 @@ USA.
          circular-list
          cons
          cons*
+         count-matching-items
+         count-non-matching-items
          del-assoc
          del-assoc!
          del-assq