--- srfi-1.scm.~1.33.~ 2004-08-27 10:14:23.000000000 +1000 +++ srfi-1.scm 2004-09-28 17:59:16.000000000 +1000 @@ -567,20 +567,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