extern crate ketos;
use ketos::{Interpreter, FromValueRef};
fn main() {
let interp = Interpreter::new();
interp.run_code(r#"
(define (factorial n)
(cond
((< n 0) (panic "factorial got negative integer"))
((<= n 1) 1)
(else (* n (factorial (- n 1))))))
"#, None).unwrap();
let v = interp.call("factorial", vec![5.into()]).unwrap();
let i = i32::from_value_ref(&v).unwrap();
assert_eq!(i, 120);
println!("(factorial 5) = {}", i);
}