listę symboli), które zostaną obliczone (według specyfikacji języka scheme makra tworzy się za pomocą define-syntax, let-syntax, syntax-rule ale większość implementacji udostępnia makro define-macro lub defmacro, za pomocą którego definiuje się makra w stylu Common Lispa).
Znak ` (tylny apostrof) działa tak jak ' (cytat) z tym że wewnątrz można użyć przecinka, który oblicza dane wyrażenie lub ,@ (przecinek małpa) który oblicza wyrażenie i usuwa zewnętrzne nawiasy.
"`" jest to skrót do funkcji quasiquote, "," – to skrót do unquote a ",@" to skrót do unquote-splicing (define-macro (for params . body) (let ((iter (gensym)) (step (if (= (length params) 4) (cadddr params) 1))) `(let ,iter ((,(car params) ,(cadr params))) (if (<= ,(car params) ,(caddr params)) (begin ,@body (,iter (+ ,(car params) ,step)))))))
; przykład użycia (for (i 1 10) (display i) (newline))
(define-macro (when test . body) `(if ,test (begin ,@body)))
(define-macro (for-list params .