summaryrefslogtreecommitdiff
path: root/pit/src/runtime/symtab.c
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-09-01 06:26:13 -0400
committerLLLL Colonq <llll@colonq>2026-09-01 06:26:13 -0400
commitff7407c146b8129c2f1cc7ebe3b5771ad2f5dfdd (patch)
treebc70d9773ebc0deb25773d3b5c86ec7ea96eef6d /pit/src/runtime/symtab.c
parent6ebac820c84b218a45368eeaf1c853ff9c9d638f (diff)
pit: Fix evaluator
Diffstat (limited to 'pit/src/runtime/symtab.c')
-rw-r--r--pit/src/runtime/symtab.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/pit/src/runtime/symtab.c b/pit/src/runtime/symtab.c
index 33ed3ba..1894208 100644
--- a/pit/src/runtime/symtab.c
+++ b/pit/src/runtime/symtab.c
@@ -104,21 +104,20 @@ void pit_symtab_symbol_mark_special_form(pit_runtime *rt, pit_value sym) {
if (!ent) { pit_error(rt, "bad symbol"); return; }
ent->is_special_form = true;
}
-void pit_symtab_sfset(pit_runtime *rt, pit_value sym, pit_value v) {
- pit_symtab_fset(rt, sym, v);
- pit_symtab_symbol_mark_special_form(rt, sym);
-}
+#include <stdio.h>
void pit_symtab_bind(pit_runtime *rt, pit_value sym, pit_value cell) {
/* although we cannot set frozen symbols, we can still bind them temporarily - no need to check */
pit_symtab_entry *ent = pit_symtab_lookup(rt, sym);
if (!ent) { pit_error(rt, "bad symbol"); return; }
if (pit_vec_push(pit_value)(rt->saved_bindings, ent->value) < 0) pit_error(rt, "binding stack overflow");
ent->value = cell;
+ fprintf(stderr, "binding: "); pit_dump_to_file(rt, stderr, sym, false); fprintf(stderr, "\n");
}
pit_value pit_symtab_unbind(pit_runtime *rt, pit_value sym) {
pit_symtab_entry *ent = pit_symtab_lookup(rt, sym);
if (!ent) { pit_error(rt, "bad symbol"); return PIT_NIL; }
pit_value old = ent->value;
if (pit_vec_pop(pit_value)(rt->saved_bindings, &ent->value) < 0) pit_error(rt, "binding stack underflow");
+ fprintf(stderr, "unbinding: "); pit_dump_to_file(rt, stderr, sym, false); fprintf(stderr, "\n");
return old;
}