;; test.scm (define-syntax test (lambda (e . _) (apply (lambda (x y #!optional (z "z")) `(string-append ,x ,y ,z)) (cdr e)))) (print (test "x" "y")) (print (test "x" "y" "z2")) -- csc test.scm && ./test >> Error: during expansion of (test ...) - unbound variable: optional