mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 09:10:22 +02:00
(span): Change to a tail-recursive form.
This commit is contained in:
parent
ee0301df8c
commit
379b03074e
1 changed files with 5 additions and 6 deletions
|
@ -617,12 +617,11 @@
|
|||
clist)))
|
||||
|
||||
(define (span pred clist)
|
||||
(if (null? clist)
|
||||
(values '() '())
|
||||
(if (pred (car clist))
|
||||
(receive (first last) (span pred (cdr clist))
|
||||
(values (cons (car clist) first) last))
|
||||
(values '() clist))))
|
||||
(let lp ((clist clist) (rl '()))
|
||||
(if (and (not (null? clist))
|
||||
(pred (car clist)))
|
||||
(lp (cdr clist) (cons (car clist) rl))
|
||||
(values (reverse! rl) clist))))
|
||||
|
||||
(define (span! pred list)
|
||||
(span pred list)) ; XXX:optimize
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue