Added fold-left and fold-right
authorStephen Adams <edu/mit/csail/zurich/adams>
Thu, 30 Sep 1993 17:08:17 +0000 (17:08 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Thu, 30 Sep 1993 17:08:17 +0000 (17:08 +0000)
v7/src/runtime/list.scm

index 0d4f58b2c8b32253bf56fcfdfe04126ec24c3048..199be9daa77f6188c00ec7a5657e3b48410dc0af 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: list.scm,v 14.17 1993/02/26 08:17:14 cph Exp $
+$Id: list.scm,v 14.18 1993/09/30 17:08:17 adams Exp $
 
 Copyright (c) 1988-93 Massachusetts Institute of Technology
 
@@ -489,6 +489,23 @@ MIT in each case. |#
        (if (not (null? list))
            (error:wrong-type-argument list "list" 'REDUCE-RIGHT))
        initial)))
+
+(define (fold-left procedure initial list)
+  (if (pair? list)
+      (fold-left procedure (procedure initial (car list)) (cdr list))
+      (begin
+       (if (not (null? list))
+           (error:wrong-type-argument list "list" 'FOLD-LEFT))
+       initial)))
+
+(define (fold-right procedure initial list)
+  (if (pair? list)
+      (procedure (car list) (fold-right procedure initial (cdr list)))
+      (begin
+       (if (not (null? list))
+           (error:wrong-type-argument list "list" 'FOLD-RIGHT))
+       initial)))
+
 \f
 ;;;; Generalized List Operations