aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/environment.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bootstrap/environment.c')
-rw-r--r--src/bootstrap/environment.c43
1 files changed, 0 insertions, 43 deletions
diff --git a/src/bootstrap/environment.c b/src/bootstrap/environment.c
index 1bbe844..0a6a866 100644
--- a/src/bootstrap/environment.c
+++ b/src/bootstrap/environment.c
@@ -1,7 +1,3 @@
1//
2// Environment.
3//
4
5typedef struct EnvEntry { 1typedef struct EnvEntry {
6 Object *symbol; 2 Object *symbol;
7 Object *value; 3 Object *value;
@@ -50,45 +46,6 @@ env_add_symbol(Environment *env, Object *symbol, Object *value) {
50 env->buf[env->size++] = (EnvEntry){symbol, value}; 46 env->buf[env->size++] = (EnvEntry){symbol, value};
51} 47}
52 48
53bool
54obj_eq(Object *a, Object* b) {
55 if (a->type != b->type) {
56 return false;
57 }
58 switch (a->type) {
59 case OBJ_TYPE_FIXNUM: {
60 return a->fixnum == b->fixnum;
61 } break;
62 case OBJ_TYPE_STRING: {
63 if (a->string_n != b->string_n) {
64 return false;
65 }
66 for (size_t i = 0; i < a->string_n; i++) {
67 if (a->string[i] != b->string[i]) {
68 return false;
69 }
70 }
71 } break;
72 case OBJ_TYPE_SYMBOL: {
73 if (a->symbol_n != b->symbol_n) {
74 return false;
75 }
76 for (size_t i = 0; i < a->symbol_n; i++) {
77 if (a->symbol[i] != b->symbol[i]) {
78 return false;
79 }
80 }
81 } break;
82 case OBJ_TYPE_PAIR: {
83 // TODO: needs evaluation of parameters...
84 } break;
85 default: {
86 return a == b;
87 } break;
88 }
89 return true;
90}
91
92Object * 49Object *
93env_lookup(Environment *env, Object *symbol) { 50env_lookup(Environment *env, Object *symbol) {
94 while (env != NULL) { 51 while (env != NULL) {