#ifndef ENVIRONMENT_H #define ENVIRONMENT_H #include "object.h" struct Environment; struct Environment { char** strings; Object* objects; struct Environment* outer; int size; int structCount; struct StructDef* structDefs; int refs; }; Object fetchFromEnvironment(const char* name, struct Environment* env); struct Environment envForLambda(const Object* params, const Object* arg_forms, struct Environment* outer); void addToEnv(struct Environment* env, const char* name, const Object obj); void printEnv(struct Environment* env); void addFunc(const char* name, Object (* func)(Object, Object, struct Environment*), struct Environment* env); void deleteEnv(struct Environment* e); struct Environment defaultEnv(); #endif