make expressions reassignable, to minimise unnecessary evaluations (#536)