From: Stephen Adams Date: Thu, 30 Sep 1993 17:08:17 +0000 (+0000) Subject: Added fold-left and fold-right X-Git-Tag: 20090517-FFI~7810 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=d5865675c1f128a43eafe444af70e456060d90a3;p=mit-scheme.git Added fold-left and fold-right --- diff --git a/v7/src/runtime/list.scm b/v7/src/runtime/list.scm index 0d4f58b2c..199be9daa 100644 --- a/v7/src/runtime/list.scm +++ b/v7/src/runtime/list.scm @@ -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))) + ;;;; Generalized List Operations