///|
/// Evaluate binary operation expressions
fn eval_operation_expr(
left : Expr,
op : BinaryOp,
right : Expr,
input : Json,
env : Env,
) -> Iter[Json] raise InterpreterError {
let left_results = eval_with_env(left, input, env).collect()
let right_results = eval_with_env(right, input, env).collect()
let all_results : Array[Json] = left_results.fold(init=[], fn(
acc,
left_val,
) raise InterpreterError {
right_results.each(fn(right_val) raise InterpreterError {
acc.push(eval_binary_op(op, left_val, right_val))
})
acc
})
all_results.iter()
}