From a888c09bd54de77fb2004754a0e14ce14a906232 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Fri, 23 Feb 2024 11:32:47 -0500 Subject: more changes --- matrix-stdlib/src/io.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 matrix-stdlib/src/io.rs (limited to 'matrix-stdlib/src/io.rs') diff --git a/matrix-stdlib/src/io.rs b/matrix-stdlib/src/io.rs new file mode 100644 index 0000000..288e99e --- /dev/null +++ b/matrix-stdlib/src/io.rs @@ -0,0 +1,36 @@ +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()); +} -- cgit v1.2.3-freya