@certik, that would be really great. In the mean time, instead of parsing before each evaluation, I will just copy the parsed expression.
feval = f
do j = 1, nvars
feval = feval%subs(vars(j), vals(j))
end do
feval = feval%evalf()
This is not a very performance sensitive part of my code, so it will work fine for now.