diff --git a/piclib/srfi/1.scm b/piclib/srfi/1.scm index 259c0c5a..85bc227e 100644 --- a/piclib/srfi/1.scm +++ b/piclib/srfi/1.scm @@ -387,15 +387,10 @@ (reverse! acc))))) (define (filter-map f clist . clists) - (if (null? clists) - (let rec ((clist clist) (cont values)) - (if (null? clist) - (cont '()) - (rec (cdr clist) - (let ((it (f (car clist)))) - (if it - (lambda (x) (cont (cons it x))) - (lambda (x) (cont x))))))))) + (let recur ((l (apply map f clist clists))) + (cond ((null? l) '()) + ((car l) (cons (car l) (recur (cdr l)))) + (else (recur (cdr l)))))) (export map for-each fold unfold pair-fold reduce