diff --git a/src/lib/syntax.rls b/src/lib/syntax.rls index 87b7aef..55144d7 100644 --- a/src/lib/syntax.rls +++ b/src/lib/syntax.rls @@ -69,4 +69,10 @@ (define-syntax (let/cc var . body) `(call/cc (lambda (,var) ,@body))) +(define-syntax (compose-if x fn . fns) + (let ([it (gensym)]) + (if (pair? fns) + `(let ([,it ,x]) (if ,it (compose-if (,fn ,it) ,@fns) #f)) + `(let ([,it ,x]) (if ,it (,fn ,it) #f))))) + ; vim:set syntax=scheme sw=2 expandtab: