| QUASIQUOTE | (QUASIQUOTE ,@qq-forms) | S | 
|  | QUOTE with selective evaluation using UNQUOTE and
  SPLICING-UNQUOTE (cf. Lisp and Scheme's QUASIQUOTE),
  abbreviated "`". |  | 
| UNQUOTE | (UNQUOTE ,form) | S | 
|  | evaluates ,form in the midst of a QUASIQUOTE
  expression, abbreviated ",". |  | 
| SPLICING-UNQUOTE | (SPLICING-UNQUOTE ,form) | S | 
|  | evaluates ,form in the midst of a QUASIQUOTE
       expression and splices it in, abbreviated ",@". |  | 
| MATCH | (MATCH ,exp (,pat ,val) ...) | S | 
|  | evaluates ,val corresponding to first ,pat
  matching ,exp.  The pattern is much the same as QUASIQUOTE 
  and can contain either UNQUOTE'd variables
  or UNQUOTE-SPLICING variables.  For example, 
(MATCH '(1 2) ((,a ,b) (lst a b))) $ --> $ (1 2) 
(MATCH '(1 2) ((,a ,@b) (lst a b))) $ --> $ (1 (2))
 |  | 
| DS | (DS ,name (,pattern) ,@body) | S | 
|  | defines a macro matching pattern ,pattern and expanding according to
  ,@body. The pattern matching occurs as in MIF and
  makes available pattern variables during the evaluation 
  of (SEQ ,@body).  For example, 
(DS unless (,test ,@body) 
  `(if (not ,test) (seq ,@body)))
defines the when macro in GOO. |  | 
|  | 
where