Re: Question involving scope/recursion/arguments
- To: mathgroup at smc.vnet.net
- Subject: [mg27654] Re: Question involving scope/recursion/arguments
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 10 Mar 2001 00:49:43 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <98a224$cri@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, a) you can only prevent the copy of an argument if the function hold the argument, otherwise Mathematica create always a copy of the arguments b) you can make a local function that use the list faux[list_,a_,b_]:=Module[{f}, f[c_,d_]:=(g[list];If[r,f[c,d],STOP]); f[a,b] ] c) you can make a block with it's dynamical name space f[c_,d_]:=(g[myListArgument];If[r,f[c,d],STOP]); faux[lst_,a_,b_]:=Block[{myListArgument=lst}, f[a,b] ] d) you can yuse Catch[]/Throw[] to terminate the recursion. Regards Jens John Eric Hanson wrote: > > Hello all- > > Having a bit of difficulty here. In general terms, the problem is this: > > I would like to have a function f that takes a list (among other things) as > an argument. I would then like to make some adjustments to the list and > then call f again (from inside the first f), and so on until the list > satisfies a certain criteria. The general template would look something > like this: > > f[list_,a_,b_] := (g[list], If[r, f[list_,c,d], STOP]) > > I can accomplish my intended task using a global variable for list (or > assigning list to a global), but I haven't succeded yet to maintain the > values when I simply want to recursively make adjustments to list without > introducing a copy of it (or fixing the function to a specific variable). > > Any hints would be appreciated. > > Thanks much, > > Eric