A test with options
- To: mathgroup at smc.vnet.net
 - Subject: [mg65414] A test with options
 - From: "Goyder Dr HGD" <h.g.d.goyder at cranfield.ac.uk>
 - Date: Fri, 31 Mar 2006 06:09:07 -0500 (EST)
 - 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[4]:=
ClearAll[f]; 
f[(a_)?TestQ] := {100*a}
In[6]:=
a1 = f[Cos[0]]
Out[6]=
f[1]
In[7]:=
(* This is as expected the function input fails the test. Now change the
test option.*)
In[8]:=
SetOptions[TestQ, EvaluationRequired -> True]; 
In[9]:=
a2 = f[Cos[0]]
Out[9]=
{100}
In[10]:=
(* This is as expected the function input passes the test. *)
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? *)
In[13]:=
c = 100 + 100 + a1
Out[13]=
200 + f[1]
Here are my questions
1. Can anyone explain why the function f is not evaluated again with the
new version of TestQ when I write b = a1 ?
2. How can I make this work so that a function that does not evaluate,
because the test fails, can be made to work once the test has been
changed?
This is a toy example the background is that I wish to construct a
function where the degree of evaluation that takes place is
controllable.
Thanks 
Hugh Goyder
-- 
This message has been scanned for viruses and
dangerous content by the Cranfield MailScanner, and is
believed to be clean.