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

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

This commit is contained in:
Kevin Ryde 2004-12-06 00:34:53 +00:00
parent ee0301df8c
commit 379b03074e

View file

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