eclisp 0.2.0-beta.0

Bindings for Embeddable Common Lisp
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(())
}