rl_lang/interpreter/stdlib/math/abs.rs
1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6/// returns the absolute value of number
7pub fn std_abs(eval: &mut Evaluator, a: Value, span: Span) -> Result<Value, Error> {
8 match a {
9 Value::Integer(i) => Ok(Value::Integer(i.abs())),
10 Value::Float(f) => Ok(Value::Float(f.abs())),
11 other => Err(eval.err(
12 format!("abs() expects a number, got {}", other.type_name()),
13 span,
14 )),
15 }
16}