1
Fork 0
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:
Kevin Ryde 2004-12-06 00:34:53 +00:00
parent ee0301df8c
commit 379b03074e

View file

@ -617,12 +617,11 @@
clist))) clist)))
(define (span pred clist) (define (span pred clist)
(if (null? clist) (let lp ((clist clist) (rl '()))
(values '() '()) (if (and (not (null? clist))
(if (pred (car clist)) (pred (car clist)))
(receive (first last) (span pred (cdr clist)) (lp (cdr clist) (cons (car clist) rl))
(values (cons (car clist) first) last)) (values (reverse! rl) clist))))
(values '() clist))))
(define (span! pred list) (define (span! pred list)
(span pred list)) ; XXX:optimize (span pred list)) ; XXX:optimize