Function Doesn't Evaluate Local Variables?
- To: mathgroup at smc.vnet.net
- Subject: [mg124675] Function Doesn't Evaluate Local Variables?
- From: Brentt <brenttnewman at gmail.com>
- Date: Tue, 31 Jan 2012 05:35:07 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
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.