program added by anandamide on Tue Mar 29 18:42:08 2016
(use srfi-1) (define-syntax foo (syntax-rules () ([foo f lst] (eval `(f ,@lst))))) ;works (define (conditional_ . conds) (lambda (x) (let ([clause (map (lambda (it) `(,it ,x)) conds)]) (foo and clause)))) ;;;does not work using fold (define (conditional . conds) (lambda (x) (let ([clause (map (lambda (it) `(,it ,x)) conds)]) (fold (lambda (a b)(and a b)) #t clause)))) (define p (conditional_ (lambda (x) (even? x)) (lambda (x) (< x 10)))) (define q (conditional (lambda (x) (even? x)) (lambda (x) (< x 10)))) (display (p 1)) (newline) (display (p 2)) (newline) (display (p 10)) (newline) (display (q 1)) (newline) (dipslay (q 2)) (newline) (display (q 10)) (newline)