From d39a2eb4c9e9ce1a9a85bc21b5628980cc7dd723 Mon Sep 17 00:00:00 2001 From: Yuito Murase Date: Thu, 26 Jun 2014 09:42:16 +0900 Subject: [PATCH] fix bug that filter-map fails when called with multiple clists --- piclib/srfi/1.scm | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) 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