Re: A test with options
- To: mathgroup at smc.vnet.net
- Subject: [mg65471] Re: A test with options
- From: Chris Rodgers <rodgers at physchem.NOSPAMox.aREMOVEc.uk>
- Date: Mon, 3 Apr 2006 06:59:41 -0400 (EDT)
- Organization: Oxford University, England
- References: <200603311109.GAA15023@smc.vnet.net> <e0lldf$779$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
>>Below I create a test with an option and a function dependant upon the
>>test. As I see it the function fails to operate as I anticipated. So I
>>am missing something and need help understanding.
>>
>>In[1]:=
>>ClearAll[TestQ];
>>Options[TestQ] = {EvaluationRequired -> False};
>>TestQ[a_] := EvaluationRequired /. Options[TestQ];
>>In[11]:=
>>b = a1
>>
>>Out[11]=
>>f[1]
>>
>>(* Now I am lost. Why in a new evaluation did the function input not get
>>retested and pass the test? *)
>>
>
>
> You need to use Update:
>
> In[10]:=
> Update[f]
> b=a1
>
> Out[11]=
> {100}
I have been bitten by this behaviour myself. As far as I could make out,
the only way to ensure consistent evaluation in Mathematica is to run
Update[] before every input - otherwise there's no guarantee of
accuracy. It seems odd to me that Mathematica doesn't add e.g. variables
mentioned in /; conditions to its list of dependencies when building the
cache of previously evaluated results.
All the same, I realise that there may be good internal reasons for such
behaviour. For interest, can you explain briefly why Mathematica is
designed to ignore variables in e.g. /; conditions when building its
internal evaluation cache?
Chris.