From b34001408ffa208e2a56ed2f3c9bdf7ebc84efd9 Mon Sep 17 00:00:00 2001 From: Kevin Ryde Date: Mon, 6 Dec 2004 00:40:07 +0000 Subject: [PATCH] (break): Change to a tail-recursive form. --- srfi/srfi-1.scm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/srfi/srfi-1.scm b/srfi/srfi-1.scm index e83a0c0bd..5fb0bf07a 100644 --- a/srfi/srfi-1.scm +++ b/srfi/srfi-1.scm @@ -818,12 +818,11 @@ (span pred list)) ; XXX:optimize (define (break pred clist) - (if (null? clist) - (values '() '()) - (if (pred (car clist)) - (values '() clist) - (receive (first last) (break pred (cdr clist)) - (values (cons (car clist) first) last))))) + (let lp ((clist clist) (rl '())) + (if (or (null? clist) + (pred (car clist))) + (values (reverse! rl) clist) + (lp (cdr clist) (cons (car clist) rl))))) (define (break! pred list) (break pred list)) ; XXX:optimize