Constrained dynamic typing