/* xdefmacro - special form 'defmacro' */ LVAL xdefmacro() { LVAL sym,fargs,arglist; /* get the function symbol and formal argument list */ xlsave1(arglist); sym = xlgasymbol(); fargs = xlgalist(); arglist = makearglist(xlargc,xlargv); /* make the symbol point to a new function definition */ xlsetfunction(sym, xlclose(sym,s_macro, fargs,arglist, NIL,NIL)); /* restore the stack and return the function symbol */ xlpop(); return (sym); }