How would you rewrite the following snippet if `env` were immutable? Would it simplify the code?

```
  def evalApply(expr: Tree, args: List[Tree], env: Env): Result = {
    val Result(vexpr, env1) = eval(expr, env)
    val Results(vargs, env2) = eval(args, env1)
    vexpr.apply(vargs, env2)
  }
```