using Cpp_function = Result(*)(Environment *env, Object *args)using Cpp_function_id = std::uint64_tusing Function2 = Result(*)(Environment *env, List *args)using kernel_ptr = sbn::pointer< Kernel >enum Typeclass lisp::Allocatorclass lisp::Booleanclass lisp::Cellclass lisp::Environmentclass lisp::Floatclass lisp::Functionclass lisp::Integerclass lisp::Kernelclass lisp::Listclass lisp::Mainclass lisp::Objectclass lisp::Primitiveclass lisp::Symbolstruct lisp::Resultstruct lisp::string_viewdefine(Environment * env, const char * name, Function2 function, Cpp_function_id function_id) -> voiddefine(Environment * env, const char * name, Object * value) -> voiddefine(Environment * env, const char * name, Cpp_function function, Cpp_function_id id) -> voideval(Environment * env, Object * obj) -> Resultinit() -> voidintern(lisp::string_view name) -> Symbol *make_main_kernel() -> Kernel *make_top_environment() -> Environment *operator<<(sbn::kernel_buffer & out, const Object * obj) -> sbn::kernel_buffer &operator<<(std::ostream & out, const Object * obj) -> std::ostream &operator<<(std::ostream & out, const Result & result) -> std::ostream &operator<<(std::ostream & out, const string_view & rhs) -> std::ostream &operator<<(std::ostream & out, Type rhs) -> std::ostream &operator>>(sbn::kernel_buffer & in, Object *& rhs) -> sbn::kernel_buffer &read(string_view & s) -> Object *read(sbn::kernel_buffer & in) -> Object *to_boolean(Object * object) -> boolto_string(Type t) -> const char *