Implement SPLIT-LIST.
authorChris Hanson <org/chris-hanson/cph>
Fri, 5 Nov 1999 05:36:14 +0000 (05:36 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 5 Nov 1999 05:36:14 +0000 (05:36 +0000)
v7/src/edwin/utils.scm

index 1d54d1efa65749d8df4b5ffdbae039fc22345c9b..7ddca69f3b7009fd0025bcb9b58b626016c678ab 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: utils.scm,v 1.45 1999/01/02 06:11:34 cph Exp $
+;;; $Id: utils.scm,v 1.46 1999/11/05 05:36:14 cph Exp $
 ;;;
 ;;; Copyright (c) 1986, 1989-1999 Massachusetts Institute of Technology
 ;;;
        (begin (procedure i)
               (loop (1+ i)))))
   (loop 0))
+
+(define (split-list elements predicate)
+  (let loop ((elements elements) (satisfied '()) (unsatisfied '()))
+    (if (pair? elements)
+       (if (predicate (car elements))
+           (loop (cdr elements) (cons (car elements) satisfied) unsatisfied)
+           (loop (cdr elements) satisfied (cons (car elements) unsatisfied)))
+       (values satisfied unsatisfied))))
 \f
 (define make-strong-eq-hash-table
   (strong-hash-table/constructor eq-hash-mod eq? #t))