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