Use EvalResult to simplify return types in eval. Remove eval_all, use a fold construct instead to evaluate multiple expressions