summaryrefslogtreecommitdiff
path: root/src/library/utility.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-01-13 14:11:23 +0100
committerLaurenz <laurmaedje@gmail.com>2022-01-13 14:14:00 +0100
commitc7f52ed0489de0c144d4684a26f557b7a6ee182e (patch)
treef775d85bbad3c7b6e99b3b11049371ca1f24435d /src/library/utility.rs
parente74ae6ce70d4c6ca006613eadf07f920951789e3 (diff)
Add `even` and `odd` functions
Diffstat (limited to 'src/library/utility.rs')
-rw-r--r--src/library/utility.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/library/utility.rs b/src/library/utility.rs
index 6cc17449..10c5980a 100644
--- a/src/library/utility.rs
+++ b/src/library/utility.rs
@@ -135,6 +135,16 @@ pub fn max(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
minmax(args, Ordering::Greater)
}
+/// Whether an integer is even.
+pub fn even(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
+ Ok(Value::Bool(args.expect::<i64>("integer")? % 2 == 0))
+}
+
+/// Whether an integer is odd.
+pub fn odd(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
+ Ok(Value::Bool(args.expect::<i64>("integer")? % 2 != 0))
+}
+
/// Find the minimum or maximum of a sequence of values.
fn minmax(args: &mut Args, goal: Ordering) -> TypResult<Value> {
let mut extremum = args.expect::<Value>("value")?;