aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/environment.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-13 20:46:26 +0200
committerBad Diode <bd@badd10de.dev>2021-10-13 20:46:26 +0200
commitd38ae947933fe26773a810d91fba3b23766d4d92 (patch)
tree036d3b100c19210d5e742c7a3334ca83833e209a /src/bootstrap/environment.c
parent3ed2c60da6ef2e18d7e273cf39056833c5b41c13 (diff)
downloadbdl-d38ae947933fe26773a810d91fba3b23766d4d92.tar.gz
bdl-d38ae947933fe26773a810d91fba3b23766d4d92.zip
Add set! and eval procedures
Diffstat (limited to 'src/bootstrap/environment.c')
-rw-r--r--src/bootstrap/environment.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/bootstrap/environment.c b/src/bootstrap/environment.c
index d4e9f86..99dd7fd 100644
--- a/src/bootstrap/environment.c
+++ b/src/bootstrap/environment.c
@@ -60,18 +60,13 @@ env_lookup(Environment *env, Object *symbol) {
60 return obj_err; 60 return obj_err;
61} 61}
62 62
63void 63ssize_t
64env_update_symbol(Environment *env, Object *symbol, Object *value) { 64env_symbol_index_in_current_env(Environment *env, Object *symbol) {
65 // Try to find an existing symbol in the current environment.
66 for (size_t i = 0; i < env->size; i++) { 65 for (size_t i = 0; i < env->size; i++) {
67 EnvEntry entry = env->buf[i]; 66 EnvEntry entry = env->buf[i];
68 if (obj_eq(symbol, entry.symbol)) { 67 if (obj_eq(symbol, entry.symbol)) {
69 env->buf[i].value = value; 68 return i;
70 return;
71 } 69 }
72 } 70 }
73 // If we don't find the symbol, add a new entry. 71 return -1;
74 env_add_symbol(env, symbol, value);
75} 72}
76
77// TODO: Free env function.