rl_lang/interpreter/stdlib/
len.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6pub fn std_len(eval: &mut Evaluator, v: Value, span: Span) -> Result<i64, Error> {
7 match v {
8 Value::Values { items, .. } => Ok(items.len() as i64),
9 Value::String(s) => Ok(s.len() as i64),
10 Value::Tuple(items) => Ok(items.len() as i64),
11 other => Err(eval.err(
12 format!(
13 "len() expects an array or string, got {}",
14 other.type_name()
15 ),
16 span,
17 )),
18 }
19}