## 6.18 Unit: syntax-case

Hieb's and Dybvig's hygienic macro package. Provides `syntax-case` and `syntax-rules`. A postscript manual can be found here: Indiana University Computer Science Department, Technical Report #356 21

Notes:

- The alternative form

      (define-syntax (keyword var) ...)

  is allowed for `define-syntax`.

- The module system described in the Chez Scheme Uses Manual is provided. Note that this module system does not facilitate separate compilation.

- To use the macro-system in compiled or interpreted code, just give the `-hygienic` option to the compiler or interpreter. The `syntax-case` unit has only to be declared as used if compiled code invokes `macroexpand` or `eval` with high-level macro syntax forms.

- The macros `define-id-macro, let-macro` and `let-id-macro` and the procedures `undefine-macro!` and `macro?` can currently not be used.

- `define-values` is not allowed in internal definitions.

- `define-syntax` can not be used inside an `eval-when` form.

21 http://www.call-with-current-continuation.org/tr356.ps