memoizing function again
- To: mathgroup at smc.vnet.net
- Subject: [mg32495] memoizing function again
- From: Erich Neuwirth <erich.neuwirth at univie.ac.at>
- Date: Wed, 23 Jan 2002 01:00:22 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
i have the following function
f[x_] /; x <= 2 := f[x] = 1
f[x_] /; x > 2 := f[x] = f[x - 1] + f[x - 2]
it remembers what it already calculated
i want to be able to throw away rules with values
between calculations
In[3]=DownValues[f]
produces
Out[3]={HoldPattern[f[x_]/;x\[LessEqual]2]\[RuleDelayed](f[x]=1),
HoldPattern[f[x_]/;x>2]\[RuleDelayed](f[x]=f[x-1]+f[x-2])}
after f[4]
we have
In[5]:=
DownValues[f]
Out[5]=
{HoldPattern[f[1]]\[RuleDelayed]1,HoldPattern[f[2]]\[RuleDelayed]1,
HoldPattern[f[3]]\[RuleDelayed]2,HoldPattern[f[4]]\[RuleDelayed]3,
HoldPattern[f[x_]/;x\[LessEqual]2]\[RuleDelayed](f[x]=1),
HoldPattern[f[x_]/;x>2]\[RuleDelayed](f[x]=f[x-1]+f[x-2])}
\[RuleDelayed] is ascii for :>, i think
so
DownValues[f] = Take[DownValues[f], -2]
removes all the rules giving calculated values
but i would like to throw away the rules following the pattern
HoldPattern[f[x_Integer]:>y_Integer
but i have not been able wo write an expression using Cases and a
pattern
which gets rid of the rules i want to get rid of
--
Erich Neuwirth, Computer Supported Didactics Working Group
Visit our SunSITE at http://sunsite.univie.ac.at
Phone: +43-1-4277-38624 Fax: +43-1-4277-9386