diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index 0d37f3d48..edb7e93cc 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -803,9 +803,13 @@ VALUE." (lambda _ value)) -(define (and=> value procedure) - "When VALUE is #f, return #f. Otherwise, return (PROC VALUE)." - (and value (procedure value))) +(define (and=> value . procedures) + "When VALUE is #f, return #f. Otherwise, return (PROC VALUE). Recurse +with subsequent procedures." + (if (null? procedures) + value + (let ((result ((car procedures) value))) + (and result (apply and=> result (cdr procedures)))))) (define call/cc call-with-current-continuation)