lake/env.h
Sami Samhuri 54831a34fa added eval and apply, lambdas, other goodies
- add booleans, dotted lists, functions
- proper lexical scope
- special forms: define, set!, and, or, quote, lambda
- added some basic list manipulations
- print functions and dotted lists
- removed nil
- more robust in general
2011-04-20 01:38:53 -07:00

32 lines
562 B
C

/**
* env.h
* Lake Scheme
*
* Copyright 2011 Sami Samhuri
* MIT License
*
*/
#ifndef _LAKE_ENV_H
#define _LAKE_ENV_H 1
#include <glib.h>
struct env {
struct env *parent;
GHashTable *bindings;
};
typedef struct env Env;
#include "lake.h"
void env_set_toplevel(Env *env);
Env *env_toplevel(void);
Env *env_make(Env *parent);
LakeVal *env_define(Env *env, LakeSym *key, LakeVal *val);
LakeVal *env_set(Env *env, LakeSym *key, LakeVal *val);
LakeVal *env_get(Env *env, LakeSym *key);
Env *env_is_defined(Env *env, LakeSym *key);
#endif