Defmacro
========
Defmacros are supported by all implementations.
- Function: gentemp
Returns a new (interned) symbol each time it is called. The symbol
names are implementation-dependent
(gentemp) => scm:G0
(gentemp) => scm:G1
- Function: defmacro:eval e
Returns the `slib:eval' of expanding all defmacros in scheme
expression E.
- Function: defmacro:load filename
FILENAME should be a string. If filename names an existing file,
the `defmacro:load' procedure reads Scheme source code expressions
and definitions from the file and evaluates them sequentially.
These source code expressions and definitions may contain defmacro
definitions. The `macro:load' procedure does not affect the values
returned by `current-input-port' and `current-output-port'.
- Function: defmacro? sym
Returns `#t' if SYM has been defined by `defmacro', `#f' otherwise.
- Function: macroexpand-1 form
- Function: macroexpand form
If FORM is a macro call, `macroexpand-1' will expand the macro
call once and return it. A FORM is considered to be a macro call
only if it is a cons whose `car' is a symbol for which a
`defmacro' has been defined.
`macroexpand' is similar to `macroexpand-1', but repeatedly
expands FORM until it is no longer a macro call.
- Macro: defmacro name lambda-list form ...
When encountered by `defmacro:eval', `defmacro:macroexpand*', or
`defmacro:load' defines a new macro which will henceforth be
expanded when encountered by `defmacro:eval',
`defmacro:macroexpand*', or `defmacro:load'.
Defmacroexpand
--------------
`(require 'defmacroexpand)'
- Function: defmacro:expand* e
Returns the result of expanding all defmacros in scheme expression
E.