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