use eclisp::{Lisp, LispError};
fn main() -> Result<(), LispError> {
let lisp = Lisp::new()?;
lisp.enter(|ctx| -> Result<(), LispError> {
ctx.eval(
r#"
(defclass vehicle ()
((speed :accessor vehicle-speed
:initarg :speed
:type real)))
(defclass canoe (vehicle)
((rowers :reader canoe-rowers
:initarg :rowers
:initform 0
:type (integer 0))))
(defparameter canoe (make-instance 'canoe :speed 10 :rowers 6))"#,
)?;
let canoe = ctx.eval("(make-instance 'canoe :speed 10 :rowers 6)")?;
let rowers = ctx.call("canoe-rowers", &[&canoe])?;
let speed = ctx.call("vehicle-speed", &[&canoe])?;
println!("Rowers: {rowers}, speed: {speed}");
Ok(())
})?;
Ok(())
}