(a)
#define swap(...) ...

(b)
(define-syntax swap (syntax-rules ... ...))

(c)
(define-syntax swap
   (syntax-rules ()
      ((swap a b) (let ((tmp b))
                    (set! b a)
                    (set! a tmp)))))

Example 2: Scheme macro basics.

Back to Article