1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 17:20:29 +02:00

(break): Change to a tail-recursive form.

This commit is contained in:
Kevin Ryde 2004-12-06 00:40:07 +00:00
parent 90ec7c2e93
commit b34001408f

View file

@ -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