;; -*- geiser-scheme-implementation: guile -*- (if (our-test) (begin (do-thing-1) (do-thing-2))) (define (when test . body) `(if ,test ,(cons 'begin body))) (when '(our-test) '(do-thing-1) '(do-thing-2)) ; (if (our-test) (begin (do-thing-1) (do-thing-2))) (define-macro (when test . body) `(if ,test ,(cons 'begin body))) (when (our-test) (do-thing-1) (do-thing-2)) (define-syntax-rule (when test body ...) (if test (begin body ...))) (define-syntax-rule (for (item lst) body ...) (for-each (lambda (item) body ...) lst)) (for (str '("strawberries" "bananas" "grapes")) (display (string-append "I just love " (string-upcase str) "!!!\n"))) ; #