This macro can be used no problem: define macro with-dbms { with-dbms(?dbms:expression) ?body:* end } => { dynamic-bind (*default-dbms* = ?dbms) ?body end; } end macro with-dbms; But this macro can't be used—the compiler reports "Error: Syntax error in 'dynamic-bind' statement. None of the main rules matched." define macro with-dbms { with-dbms(?dbms:expression) ?body:* end } => { dynamic-bind (*default-dbms* = ?dbms) ?body ; close-dbms(*default-dbms*) end; } end macro with-dbms;