MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: dynamic programming inside a function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg40482] Re: dynamic programming inside a function
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Mon, 7 Apr 2003 04:56:04 -0400 (EDT)
  • Organization: Universitaet Leipzig
  • References: <b6j9it$63n$1@smc.vnet.net>
  • Reply-to: kuska at informatik.uni-leipzig.de
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

test[f_, vars_List] := Module[{v, vPat}, Clear[temp];
    vPat = Sequence @@ (Pattern[#, Blank[]] & /@ vars);
    v = Sequence @@ vars;
    temp[vPat] := Evaluate[Blub[temp[v], f[v]]];
    DownValues[temp] = DownValues[temp] /. Blub -> Set
    ]


Regards
  Jens


Ken Sale wrote:
> 
> Hi MathGroup,
> 
> I'm trying to figure out how to create a function that remembers its
> values inside a function definition (I want the temporary function to
> stay hidden in a package eventually.  I've tried the following
> 
> test[f_, vars_List] :=
>    Module[{v, vPat},
>      Clear[temp];
>      vPat = Sequence @@ (Pattern[#, Blank[]] & /@ vars);
>      v = Sequence @@ vars;
>      temp[vPat] := temp[v] = f[v];
>      ]
> 
> When I evaluate
> test[Sin, {x}]
> 
> I find that the definition of temp isn't what I want
> 
> ?temp
> 
> temp[x_] := temp[v$97] = Sin[v$97]
> 
> What I'd like to get instead is
> 
> temp[x_] := temp[x] = Sin[x]
> 
> I've tried putting ReleaseHold around various parts of the assignment
> but so far haven't found a way to do what I want.
> 
> Any help will be appreciated.
> 
> Thanks,
> Ken
> --
> Ken Sale
> Group Leader / Physicist
> Radiation Technology Group
> Lawrence Livermore National Laboratory
> (925) 423-0686


  • Prev by Date: Re: Variable number of intervals
  • Next by Date: Re: Package - Module
  • Previous by thread: RE: dynamic programming inside a function
  • Next by thread: Question on formats etc.