eclisp 0.1.1

Bindings for Embeddable Common Lisp
use eclisp::{Lisp, LispError};

fn main() -> Result<(), LispError> {
    let lisp = Lisp::new()?;

    lisp.enter(|ctx| -> Result<(), LispError> {
        let value = ctx.eval("(+ 1 2)")?;
        println!("Result of (+ 1 2): {:?}", value.try_as_i64());

        let list = ctx.eval("'(10 20 30)")?;

        println!("Result of '(10 20 30): {}", list);
        for value in list.iter() {
            println!("{}", value?);
        }

        ctx.eval("(defun double (n) (* n 2))")?;
        let doubled = ctx.call("double", &[&ctx.int(3)?])?;
        println!("3 doubled = {}", doubled);

        Ok(())
    })?;

    Ok(())
}