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
$f
to 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
"$f"
means $f
is 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
and "$f"
is crucial.
Davide