Skip to main content
replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
Source Link

Here is my version using injector patterninjector pattern:

ClearAll[myWith]; SetAttributes[myWith,HoldAll]; myWith[pars_=vals_,body_]:= Apply[Set,Hold[Evaluate[Transpose[{pars,vals}]]],{2}]/. Hold[vars_]:>With[vars,body] 

This code assumes that pars evaluate to a list of symbols. For example,

myWith[params=vals,a+b+c+d] (* 10 *) 

Here is my version using injector pattern:

ClearAll[myWith]; SetAttributes[myWith,HoldAll]; myWith[pars_=vals_,body_]:= Apply[Set,Hold[Evaluate[Transpose[{pars,vals}]]],{2}]/. Hold[vars_]:>With[vars,body] 

This code assumes that pars evaluate to a list of symbols. For example,

myWith[params=vals,a+b+c+d] (* 10 *) 

Here is my version using injector pattern:

ClearAll[myWith]; SetAttributes[myWith,HoldAll]; myWith[pars_=vals_,body_]:= Apply[Set,Hold[Evaluate[Transpose[{pars,vals}]]],{2}]/. Hold[vars_]:>With[vars,body] 

This code assumes that pars evaluate to a list of symbols. For example,

myWith[params=vals,a+b+c+d] (* 10 *) 
Source Link
Leonid Shifrin
  • 115.8k
  • 16
  • 341
  • 435

Here is my version using injector pattern:

ClearAll[myWith]; SetAttributes[myWith,HoldAll]; myWith[pars_=vals_,body_]:= Apply[Set,Hold[Evaluate[Transpose[{pars,vals}]]],{2}]/. Hold[vars_]:>With[vars,body] 

This code assumes that pars evaluate to a list of symbols. For example,

myWith[params=vals,a+b+c+d] (* 10 *)