diff --git a/srfi/srfi-1.scm b/srfi/srfi-1.scm index 8301b68a2..1ff07a559 100644 --- a/srfi/srfi-1.scm +++ b/srfi/srfi-1.scm @@ -747,13 +747,14 @@ (filiter pred list '()))) (define (partition pred list) - (if (null? list) - (values '() '()) - (if (pred (car list)) - (receive (in out) (partition pred (cdr list)) - (values (cons (car list) in) out)) - (receive (in out) (partition pred (cdr list)) - (values in (cons (car list) out)))))) + (let lp ((list list) + (in '()) + (out '())) + (if (null? list) + (values (reverse! in) (reverse! out)) + (if (pred (car list)) + (lp (cdr list) (cons (car list) in) out) + (lp (cdr list) in (cons (car list) out)))))) (define (remove pred list) (filter (lambda (x) (not (pred x))) list))