aboutsummaryrefslogtreecommitdiff
path: root/src/interp.h
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-20 20:47:27 +0800
committerMistivia <i@mistivia.com>2025-06-20 20:47:27 +0800
commitbb59a50ac59b4412ea77e9e25e276b25109808c2 (patch)
treefded72c3295c2039de53a16ce8b96a281d0fa44f /src/interp.h
parente88146d1f14577c68de8117964c222c754757a84 (diff)
macro
Diffstat (limited to 'src/interp.h')
-rw-r--r--src/interp.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/interp.h b/src/interp.h
index 1eaa920..b7b3025 100644
--- a/src/interp.h
+++ b/src/interp.h
@@ -60,6 +60,7 @@ void Interp_add_userfunc(Interp *self, const char *name, LispUserFunc fn);
#define PUSH_REG(_x) { interp->reg = CONS((_x), interp->reg); }
#define POP_REG() { interp->reg = CDR(interp->reg); }
+SExpRef lisp_macroexpand1(Interp *interp, SExpRef macro, SExpRef args);
SExpRef lisp_reverse(Interp *interp, SExpRef lst);
void lisp_defun(Interp *interp, const char *name, SExpRef val);
void lisp_defvar(Interp *interp, const char *name, SExpRef val);
@@ -95,6 +96,7 @@ SExpRef new_env(Interp *ctx);
SExpRef new_binding(Interp *ctx, SExpRef name, SExpRef val);
SExpRef new_userfunc(Interp *interp, LispUserFunc val);
SExpRef new_lambda(Interp *interp, SExpRef param, SExpRef body, SExpRef env);
+SExpRef new_macro(Interp *interp, SExpRef param, SExpRef body);
SExpRef new_list1(Interp *ctx, SExpRef e1);
SExpRef new_list2(Interp *ctx, SExpRef e1, SExpRef e2);
SExpRef new_list3(Interp *ctx, SExpRef e1, SExpRef e2, SExpRef e3);