Re: Function Doesn't Evaluate Local Variables?
- To: mathgroup at smc.vnet.net
- Subject: [mg124676] Re: Function Doesn't Evaluate Local Variables?
- From: Brentt <brenttnewman at gmail.com>
- Date: Tue, 31 Jan 2012 05:35:28 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <CAFJC7Xr9ACFiAvBapMcyxMzXgpwRymVc_XMTKkXFeu=MbQi3rw@mail.gmail.com>
Sorry this ReplacePart[#1, n -> p #1[[n]] + q #1[[m]]& should be this ReplacePart[#1, n -> p #1[[n]] + q #1[[m]]]& On Mon, Jan 30, 2012 at 10:37 AM, Brentt <brenttnewman at gmail.com> wrote: > Hello, this result is puzzling me. > I'm trying to make a function that outputs a pure function. > > The inputs are two expressions of the form > > input1: p r[n] + q r[m] > input2: r[n] > > And the output should be a pure function of the form: > ReplacePart[#1, n -> p #1[[n]] + q #1[[m]]& > > > This was my attempt: > > row[n_] := Hold[Part[Slot[1], n]]; > rpl[old_, new_] := Block[{index, newrow}, > index = new[[1]]; > newrow = old /. r -> row; > ReplacePart[#1, index -> newrow] & > ]; > > But when using rpl, for some reason doesn't evaluate index and newexp, > and just gives me this > > In[1]:= rpl[2 r[1] + 3 r[2] , r[1]] > Out[1]= ReplacePart[#1, index -> newrow] & > > Why did it not give the appropriate expressions for "new row" and "index" > but instead just output the names of the variables? > > In case you are curious, I'm trying to write a program that takes a list > of elementary row opeartion, specified by a list of the form > operationSequence ={ > 1 r[1] + 2 r[2] -> r[1], > r[1] <-> r[2], > 2 r[1] -> r[1] > } > and transforms each row operation in the list into a function, and uses > compose list to output a nicely formatted sequence of row operations to > Latex. Any pointers for a more elegant way to do this would be most > welcome. > > >