utree eval(scope const& env) const { scope const* eptr = &env; utree result; for (std::size_t i = n; i < eptr->size(); ++i) { utree const& arg = (*eptr)[i]; if (arg.which() != utree_type::function_type) result.push_back(utree(boost::ref(arg))); else result.push_back(arg.eval(*eptr)); } return result; }