Re: Deleting a DownValue, Evaluate[f@@argList]=. does not do it
- To: mathgroup at smc.vnet.net
- Subject: [mg20761] Re: Deleting a DownValue, Evaluate[f@@argList]=. does not do it
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 11 Nov 1999 00:22:40 -0500
- Organization: Universitaet Leipzig
- References: <80au96$j2i@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, Evaluate[ f @@ {1}]=. can't work because when f @@ {1} is evaluated you get 1 and not f[1]. When you evaluate f @@ {1} to get f[1] the evaluation doe not stop after this step, it continues with the f[1]=1 definition. The correct way is to create a HoldPattern[f[1]] and modify the down values by toremove = $newsymbol @@ {1}; (* since $newsymbol has now downvalues one get $newsymbol[1] *) toremove = HoldPattern[Evaluate[toremove]] /. $newsymbol -> f; (* Now we have HoldPattern[f[1]] *) DownValues[f] = Select[DownValues[f], FreeQ[#, toremove] &] Hope that helps Jens SNIP SNAP > > Clear[f]; > Evaluate[f@@{1}]=1; > Evaluate[f@@{2}]=2; > ?f > > yields > > "Global`f" > f[1] = 1 > f[2] = 2 > > as before. Now I want to get rid of the definition for 1 in the analogous way: > > Evaluate[f@@{1}]=. > > yields > > Unset::usraw: Cannot unset raw object ! > $Failed > > How to proceed without searching through DownValues[f] and deleting > the one meant - very awkward? > > kind regards > > Dipl.-Math. Adalbert Hanszen