Re: How to produce variable substitution list?

*To*: mathgroup at smc.vnet.net*Subject*: [mg90919] Re: How to produce variable substitution list?*From*: Valeri Astanoff <astanoff at gmail.com>*Date*: Tue, 29 Jul 2008 06:10:27 -0400 (EDT)*References*: <g6mat3$i19$1@smc.vnet.net>

On 29 juil, 07:47, Stoney Ballard <ston... at gmail.com> wrote: > Is there a straight-forward way to write a function that takes a list > of symbols that are bound in the calling environment and produce a > list such as is produced by Solve, like {var1->val1, var2->val2,...}? > > Currently, I'm using an expression (not a function) like {Hold[var1]->var= 1, Hold[var2]->var2}, which produces the right result, but it > > looks bad to duplicate the symbols. I want something that looks clean, > like bindings[var1, var2,...]. > > I know this isn't lisp, and there's no binding environment as such, > but it would expect this to be doable. > > TIA for any suggestions. > > =A0- Stoney Good day, This is a solution inspired from Roman Maeder's "Programming in Mathematica": In[1]:=3D SetAttributes[myRules,HoldAll]; myRules[vars_List]:=3D With[{vv=3DMap[Hold,MapAt[Hold,Hold[vars],{1,0}],{2}][[1]]}, List@@(# -> ReleaseHold[#]& /@ vv) ]; In[2]:=3D var1=3D3; var2=3D5; myRules[{var1,var2}] Out[4]=3D {Hold[var1]->3,Hold[var2]->5} V.Astanoff