From 8f7726eab5978bb06206d25bc29cec8d4b40c2a6 Mon Sep 17 00:00:00 2001 From: bakk Date: Sun, 23 Jan 2022 00:32:58 +0100 Subject: [PATCH] Added 'length' function and added 'permutations' as an alias to 'perms' function --- kalk/src/prelude/mod.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kalk/src/prelude/mod.rs b/kalk/src/prelude/mod.rs index 22dabc2..df1d18a 100644 --- a/kalk/src/prelude/mod.rs +++ b/kalk/src/prelude/mod.rs @@ -74,6 +74,7 @@ lazy_static! { m.insert("iverson", (UnaryFuncInfo(iverson, Other), "")); m.insert("Im", (UnaryFuncInfo(im, Other), "")); m.insert("ln", (UnaryFuncInfo(ln, Other), "")); + m.insert("length", (UnaryFuncInfo(length, Other), "")); m.insert("log", (UnaryFuncInfo(log, Other), "")); m.insert("Re", (UnaryFuncInfo(re, Other), "")); m.insert("round", (UnaryFuncInfo(round, Other), "")); @@ -109,6 +110,7 @@ lazy_static! { m.insert("max", VectorFuncInfo(max, Other)); m.insert("min", VectorFuncInfo(min, Other)); m.insert("perms", VectorFuncInfo(perms, Other)); + m.insert("permutations", VectorFuncInfo(perms, Other)); m }; } @@ -720,6 +722,14 @@ pub mod funcs { } } + pub fn length(x: KalkValue) -> KalkValue { + match x { + KalkValue::Vector(values) => KalkValue::from(values.len() as f64), + KalkValue::Matrix(rows) => KalkValue::from(rows.len() as f64), + _ => KalkValue::from(0f64), + } + } + pub fn max(x: KalkValue) -> KalkValue { let values = as_vector_or_return!(x); let mut max = &values[0];