#ifndef INCLUDED_INTERP_H #define INCLUDED_INTERP_H #include "base.h" LispVal *eval(LispVal *form); DECLARE_FUNCTION(eval, (LispVal * form, LispVal *lexenv)); DECLARE_FUNCTION(progn, (LispVal * forms)); DECLARE_FUNCTION(setq, (LispVal * bindings)); DECLARE_FUNCTION(let, (LispVal * bindings, LispVal *body)); DECLARE_FUNCTION(if, (LispVal * cond, LispVal *then, LispVal *otherwise)); DECLARE_FUNCTION(and, (LispVal * forms)); DECLARE_FUNCTION(or, (LispVal * forms)); DECLARE_FUNCTION(null, (LispVal * datum)); DECLARE_FUNCTION(not, (LispVal * datum)); DECLARE_FUNCTION(block, (LispVal * name, LispVal *body)); DECLARE_FUNCTION(return_from, (LispVal * name, LispVal *value)); DECLARE_SYMBOL(unbound_variable_error); MAKE_CONDITION_CLASS(unbound_variable_error); #endif