move can_evalf logic to evalf