17.7 Symbolic Procedures

All the functions described in the Standard Lisp Report are available to users insymbolic mode. Additional functions may also be defined as symbolicprocedures. For example, to define the Lisp function ASSOC, the following couldbe used:

If the default mode were symbolic, then SYMBOLIC could be omitted inthe above definition. MACROsmay be defined by prefixing the keywordPROCEDURE by the word MACRO. (In fact, ordinary functions may bedefined with the keyword EXPRprefixing PROCEDURE as was used in theStandard Lisp Report.) For example, we could define a MACRO CONSCONSby

symbolic macro procedure conscons l;
expand(cdr l,’cons);

Another form of macro, the SMACROis also available. These are described inthe Standard Lisp Report. The Report also defines a function type FEXPR.However, its use is discouraged since it is hard to implement efficiently, and mostuses can be replaced by macros. At the present time, there are no FEXPRs in thecore REDUCE system.