#ifndef BDL_PRIMITIVES_H #define BDL_PRIMITIVES_H // Function evaluation. Object * eval(Environment *env, Object *root); // Evaluation functions. Object * proc_quote(Environment *env, Object *obj); Object * proc_eval(Environment *env, Object *obj); // Arithmetic. Object * proc_sum(Environment *env, Object *obj); Object * proc_sub(Environment *env, Object *obj); Object * proc_mul(Environment *env, Object *obj); Object * proc_div(Environment *env, Object *obj); Object * proc_mod(Environment *env, Object *obj); // Printing. Object * proc_display(Environment *env, Object *obj); Object * proc_print(Environment *env, Object *obj); Object * proc_newline(Environment *env, Object *obj); // Type checking. Object * proc_is_boolean(Environment *env, Object *obj); Object * proc_is_nil(Environment *env, Object *obj); Object * proc_is_symbol(Environment *env, Object *obj); Object * proc_is_string(Environment *env, Object *obj); Object * proc_is_fixnum(Environment *env, Object *obj); Object * proc_is_pair(Environment *env, Object *obj); Object * proc_is_procedure(Environment *env, Object *obj); Object * proc_is_error(Environment *env, Object *obj); // Logical operations. Object * proc_not(Environment *env, Object *obj); Object * proc_and(Environment *env, Object *obj); Object * proc_or(Environment *env, Object *obj); Object * proc_cond(Environment *env, Object *obj); Object * proc_num_less_than(Environment *env, Object *obj); Object * proc_num_greater_than(Environment *env, Object *obj); Object * proc_num_lesseq_than(Environment *env, Object *obj); Object * proc_num_greatereq_than(Environment *env, Object *obj); Object * proc_num_equal(Environment *env, Object *obj); Object * proc_equal(Environment *env, Object *obj); // List operations. Object * proc_car(Environment *env, Object *obj); Object * proc_cdr(Environment *env, Object *obj); Object * proc_cons(Environment *env, Object *obj); Object * proc_list(Environment *env, Object *obj); // Environment/variable manipulation. Object * proc_define(Environment *env, Object *obj); Object * proc_set(Environment *env, Object *obj); Object * proc_lambda(Environment *env, Object *obj); Object * proc_fun(Environment *env, Object *obj); // Runtinme configuration. Object * proc_supress_errors(Environment *env, Object *obj); #endif // BDL_PRIMITIVES_H