mirror of
https://github.com/samsonjs/lake.git
synced 2026-03-25 08:55:49 +00:00
- 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
32 lines
562 B
C
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
|