Context("Context1"); $MathObject = Compute("..."); Context("Context2"); $MathObject1 = Compute($MathObject1);doesn't really recompute $MathObject1, it just switches what context it is associated with (but doesn't re-parse the object using the new rules). So, for example,
Context("Vector"); $f = Compute("<x,x+1>"); Context("Numeric"); $f = Compute($f);doesn't cause an error, it simply forces the formula for
$fto think it is from the Numeric context. If
ANS($f->cmp);were used, the student would have no way to enter the correct answer, since the vector could not be entered in Numeric context.
On the other hand,
Context("Vector"); $f = Compute("<x,x+1>"); Context("Numeric"); $f = Compute("$f");would cause an error, because here
$fis first stringified, and then
Compute()re-parses the string, leading to an error, since
<is not defined in Numeric context.
This is one of the places where the difference between
"$f" is crucial.