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 ++++++++++++++++++++++++++++++++++++ matrix-stdlib/src/lib.rs | 15 ++++----------- 2 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 matrix-stdlib/src/io.rs (limited to 'matrix-stdlib/src') 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()); +} diff --git a/matrix-stdlib/src/lib.rs b/matrix-stdlib/src/lib.rs index 7d12d9a..312d397 100644 --- a/matrix-stdlib/src/lib.rs +++ b/matrix-stdlib/src/lib.rs @@ -1,14 +1,7 @@ -pub fn add(left: usize, right: usize) -> usize { - left + right -} +use matrix::vm::Vm; -#[cfg(test)] -mod tests { - use super::*; +mod io; - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } +pub fn load(compiler: &mut Vm) { + io::load(compiler); } -- cgit v1.2.3-freya