use matrix::{value::Value, self, vm::Vm, Result}; use matrix_macros::native_func; #[native_func(1, true)] fn print(_vm: &mut Vm, args: Vec) -> Result { let [values] = args.try_into().unwrap(); if let Value::List(list) = values { for (i, value) in list.iter().enumerate() { print!("{}", value.boring_print()); if i != 0 { print!(" "); } } } Ok(Value::Nil) } #[native_func(1, true)] fn println(_vm: &mut Vm, args: Vec) -> Result { let [values] = args.try_into().unwrap(); if let Value::List(list) = values { for (i, value) in list.iter().enumerate() { print!("{}", value.boring_print()); if i != 0 { print!(" "); } } } print!("\n"); Ok(Value::Nil) } pub fn load(vm: &mut Vm) { vm.load_native_fn(print()); vm.load_native_fn(println()); }