Re: What am I doing wrong?

• Subject: [mg2192] Re: What am I doing wrong?
• From: ianc (Ian Collier)
• Date: Fri, 13 Oct 1995 06:24:51 GMT
• Approved: usenet@wri.com
• Distribution: local
• Newsgroups: wri.mathgroup
• Organization: Wolfram Research, Inc.
• Sender: daemon at wri.com ( )

```In article <45d24c\$63m at ralph.vnet.net>, JSNW at msg.ti.com (Jason Welter) wrote:

> Kemp[z_] := If[z>5,Kemp=gft[z] + 21,Kemp=gft[z] - 21]
> gft[z_] := If[z>5,gft=z^2 + 2,gft=z^2 - 2]
> Kemp[4]
>
> SetDelayed::write: Tag Integer in (-14)[z_] is Protected.
> \$Failed
> SetDelayed::write: Tag Integer in 7[z_] is Protected.
> \$Failed
> (-14)[4]

I can't reproduce exactly what you are seeing, but I think that
redundant and problematic.

I only see a problem when I call Kemp for the second time.

Changing the definition slightly (Kemp2 and gft2 below)
eliminates the problem.

In your example in calling Kemp you then set the symbol Kemp
to a certain value (after you defined the function) and this
value is used when you attempt to call the function Kemp for
the second time.

In[1]:=
Kemp[z_] := If[z>5,Kemp=gft[z] + 21,Kemp=gft[z] - 21]
In[2]:=
gft[z_] := If[z>5,gft=z^2 + 2,gft=z^2 - 2]
In[3]:=
Kemp[4]
Out[3]=
-7
In[7]:=
Kemp[5]
Out[7]=
(-7)[5]
In[4]:=
Kemp2[z_] := If[z>5,gft2[z] + 21,gft2[z] - 21]
In[5]:=
gft2[z_] := If[z>5,z^2 + 2,z^2 - 2]
In[6]:=
Kemp2[4]
Out[6]=
-7
In[8]:=
Kemp2[5]
Out[8]=
2

--Ian

-----------------------------------------------------------
Ian Collier
Technical Sales Support
Wolfram Research, Inc.
-----------------------------------------------------------
tel:(217)-398-0700     fax:(217)-398-0747      ianc at wri.com