using Cpp_function = Result(*)(Environment *env, Object *args)
using Cpp_function_id = std::uint64_t
using Function2 = Result(*)(Environment *env, List *args)
using kernel_ptr = sbn::pointer< Kernel >
enum Type
class lisp::Allocator
class lisp::Boolean
class lisp::Cell
class lisp::Environment
class lisp::Float
class lisp::Function
class lisp::Integer
class lisp::Kernel
class lisp::List
class lisp::Main
class lisp::Object
class lisp::Primitive
class lisp::Symbol
struct lisp::Result
struct lisp::string_view
define(Environment * env, const char * name, Function2 function, Cpp_function_id function_id) -> void
define(Environment * env, const char * name, Object * value) -> void
define(Environment * env, const char * name, Cpp_function function, Cpp_function_id id) -> void
eval(Environment * env, Object * obj) -> Result
init() -> void
intern(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) -> bool
to_string(Type t) -> const char *