use eclisp::{Lisp, LispError, sys};
unsafe extern "C" fn double_n() -> sys::cl_object {
unsafe { sys::eclisp_int_raw(10) }
}
unsafe extern "C" fn square_n() -> sys::cl_object {
unsafe { sys::eclisp_int_raw(9) }
}
fn main() -> Result<(), LispError> {
let lisp = Lisp::new()?;
lisp.enter(|ctx| {
ctx.defun_native_0("double-n", double_n)?;
ctx.defun_native_0("square-n", square_n)?;
let result = ctx.eval("(double-n)")?;
println!("Result: {:?}", result);
let result = ctx.eval("(square-n)")?;
println!("Result: {:?}", result);
Ok::<(), LispError>(())
})?;
Ok(())
}