Utilizando `With` con una lista de` Reglas` - pero sin afectar el comportamiento normal de `With`
Di que tengo una lista deRules
rules = {a -> b, c -> d};
que uso en un cuaderno. Entonces, en un punto, tiene sentido querer que se apliquen las reglas antes de que cualquier otra evaluación tenga lugar en una expresión. Normalmente, si quieres algo como esto, usarías
In[2]:= With[{a=b,c=d}, expr[a,b,c,d]]
Out[2]= expr[b, b, d, d]
¿Cómo puedo tomarrules
e insértelo en el primer argumento deWith
?
Ambo Algunas soluciones fallan hacen todo lo que estaba buscando, pero debería haber enfatizado este punto un poco más. Vea la parte en negrita arriba.
Por ejemplo, echemos un vistazo a
rules = {a -> {1, 2}, c -> 1};
Si uso estos vaules enWith
, Yo obteng
In[10]:= With[{a={1,2},c=1}, Head/@{a,c}]
Out[10]= {List,Integer}
Algunas versiones deWithRules
rendimient
In[11]:= WithRules[rules, Head/@{a,c}]
Out[11]= {Symbol, Symbol}
(Actualment, No me di cuenta de que la respuesta de Andrew tenía el atributoHoldRest
- por lo que funciona tal como yo quería.)