// proc assert_type(Lisp_Object*, Lisp_Object_Type) -> void; void add_to_load_path(const char*); bool lisp_object_equal(Lisp_Object*,Lisp_Object*); Lisp_Object* built_in_load(String*); Lisp_Object* built_in_import(String*); void delete_error(); void create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, String* message); void create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...); void create_error(Lisp_Object* type, const char* message, const char* c_file_name, int c_file_line); Lisp_Object* eval_arguments(Lisp_Object*); Lisp_Object* eval_expr(Lisp_Object*); bool is_truthy (Lisp_Object*); int list_length(Lisp_Object*); void load_built_ins_into_environment(); void create_arguments_from_lambda_list_and_inject(Lisp_Object* formal_arguments, Lisp_Object* function); Lisp_Object* lookup_symbol(Lisp_Object* symbol, Environment*); void define_symbol(Lisp_Object* symbol, Lisp_Object* value); void print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout); void print_environment(Environment*); inline Environment* get_root_environment(); inline Environment* get_current_environment(); inline void push_environment(Environment*); inline void pop_environment(); const char* Lisp_Object_Type_to_string(Lisp_Object_Type type); void visualize_lisp_machine(); void generate_docs(String* path); namespace Memory { Environment* create_built_ins_environment(); Lisp_Object* create_lisp_object_cfunction(bool is_special); Lisp_Object* get_or_create_lisp_object_keyword(const char* identifier); inline Lisp_Object_Type get_type(Lisp_Object* node); void init(int, int, int); char* get_c_str(String*); void free_everything(); String* create_string(const char*); Lisp_Object* create_lisp_object_number(double); Lisp_Object* get_or_create_lisp_object_symbol(String* identifier); Lisp_Object* get_or_create_lisp_object_symbol(const char*); Lisp_Object* get_or_create_lisp_object_keyword(String* identifier); Lisp_Object* get_or_create_lisp_object_keyword(const char*); Lisp_Object* create_lisp_object_string(const char*); Lisp_Object* create_list(Lisp_Object*); Lisp_Object* create_list(Lisp_Object*,Lisp_Object*); Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*); Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); } namespace Parser { // extern Environment* environment_for_macros; extern String* standard_in; extern String* parser_file; extern int parser_line; extern int parser_col; Lisp_Object* parse_single_expression(char* text); Lisp_Object* parse_single_expression(wchar_t* text); } namespace Globals { extern char* bin_path; extern Log_Level log_level; extern Array_List load_path; namespace Current_Execution { extern Array_List call_stack; extern Array_List envi_stack; } extern Error* error; extern bool breaking_on_errors; }