val 0.6.0

An arbitrary precision calculator language
Documentation
use super::*;

builtin! {
  List {
    name: "list",
    arity: BuiltinArity::Exact(1),
    call(payload) {
      let value = payload.arguments.into_iter().next().unwrap();

      Ok(match value {
        Value::List(items) => Value::List(items),
        Value::String(s) => Value::List(
          s.chars()
            .map(|c| Value::String(c.to_string()))
            .collect(),
        ),
        _ => Value::List(vec![value]),
      })
    }
  }
}