diff --git a/srfi/srfi-1.scm b/srfi/srfi-1.scm index 5529d6201..e355431bd 100644 --- a/srfi/srfi-1.scm +++ b/srfi/srfi-1.scm @@ -730,20 +730,22 @@ (define (filter-map f clist1 . rest) (if (null? rest) - (let lp ((l clist1)) + (let lp ((l clist1) + (rl '())) (if (null? l) - '() + (reverse! rl) (let ((res (f (car l)))) (if res - (cons res (lp (cdr l))) - (lp (cdr l)))))) - (let lp ((l (cons clist1 rest))) + (lp (cdr l) (cons res rl)) + (lp (cdr l) rl))))) + (let lp ((l (cons clist1 rest)) + (rl '())) (if (any1 null? l) - '() + (reverse! rl) (let ((res (apply f (map1 car l)))) (if res - (cons res (lp (map1 cdr l))) - (lp (map1 cdr l)))))))) + (lp (map1 cdr l) (cons res rl)) + (lp (map1 cdr l) rl))))))) ;;; Filtering & partitioning