mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 22:10:21 +02:00
(break): Change to a tail-recursive form.
This commit is contained in:
parent
379b03074e
commit
ba94ef0c7f
1 changed files with 5 additions and 6 deletions
|
@ -627,12 +627,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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue