pub fn evaluate( expr: &ValueExpr, variables: &HashMap<String, Value>, ) -> Result<Value, ExecutionError>
Evaluate an expression with just a variable map (no local scope). This is a convenience wrapper for the common case.