From 9c783616cc46eeb907c93b272dd6a6f36df9e204 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 12 Jul 2016 09:05:51 +0200 Subject: [PATCH] Reduce-right not limited by stack * module/srfi/srfi-1.scm (reduce-right): Avoid blowing out the stack. Fixes #17485. --- module/srfi/srfi-1.scm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/module/srfi/srfi-1.scm b/module/srfi/srfi-1.scm index d2531b59d..670a3ae7d 100644 --- a/module/srfi/srfi-1.scm +++ b/module/srfi/srfi-1.scm @@ -557,10 +557,7 @@ then that's the return value." F is on two elements from LST, rather than one element and a given initial value. If LST is empty, RIDENTITY is returned. If LST has just one element then that's the return value." - (check-arg procedure? f reduce) - (if (null? lst) - ridentity - (fold-right f (last lst) (drop-right lst 1)))) + (reduce f ridentity (reverse lst))) (define map (case-lambda