From b064377679c8e9cc702ab21db61b5f9024289900 Mon Sep 17 00:00:00 2001 From: Kevin Ryde Date: Fri, 11 Feb 2005 21:37:08 +0000 Subject: [PATCH] (reduce, reduce-right): Don't call f with ridentity, use it only if lst is empty, per srfi and intended optimization reduce represents over fold. --- srfi/srfi-1.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/srfi/srfi-1.scm b/srfi/srfi-1.scm index 1004cd51e..8d8a21d72 100644 --- a/srfi/srfi-1.scm +++ b/srfi/srfi-1.scm @@ -511,10 +511,14 @@ (uf (g seed) (cons (f seed) lis)))))) (define (reduce f ridentity lst) - (fold f ridentity lst)) + (if (null? lst) + ridentity + (fold f (car lst) (cdr lst)))) (define (reduce-right f ridentity lst) - (fold-right f ridentity lst)) + (if (null? lst) + ridentity + (fold-right f (last lst) (drop-right lst 1)))) ;; Internal helper procedure. Map `f' over the single list `ls'.