Skip to main content

rl_lang/interpreter/stdlib/math/
max.rs

1use crate::{
2    interpreter::{evaluator::Evaluator, values::Value},
3    utils::{errors::Error, span::Span},
4};
5
6pub fn std_max(eval: &mut Evaluator, a: Value, b: Value, span: Span) -> Result<Value, Error> {
7    match (a, b) {
8        (Value::Integer(a), Value::Integer(b)) => Ok(Value::Integer(a.max(b))),
9        (Value::Float(a), Value::Float(b)) => Ok(Value::Float(a.max(b))),
10        (a, b) => Err(eval.err(
11            format!(
12                "max() expects a number, got ({}, {})",
13                a.type_name(),
14                b.type_name()
15            ),
16            span,
17        )),
18    }
19}