) в Mathematica, один из которых демонстрирует приведенный выше фрагмент кода.
, у меня есть списокRules
rules = {a -> b, c -> d};
который я использую на протяжении всей записной книжки. Тогда в какой-то момент имеет смысл захотеть применить правилапрежде чем любые другие оценки имеют место в выражении, Обычно, если вы хотите что-то подобное, вы бы использовали
In[2]:= With[{a=b,c=d}, expr[a,b,c,d]]
Out[2]= expr[b, b, d, d]
Как я могу взятьrules
и вставить его в первый аргументWith
?
ОбеНекоторые решения терпят неудачу, делают все, что я искал - но я должен был подчеркнуть этот момент немного больше Смотрите смелую часть выше.
Например, давайте посмотрим на
rules = {a -> {1, 2}, c -> 1};
Если я использую эти vaules вWith
, Я получил
In[10]:= With[{a={1,2},c=1}, Head/@{a,c}]
Out[10]= {List,Integer}
Некоторые версииWithRules
Уступать
In[11]:= WithRules[rules, Head/@{a,c}]
Out[11]= {Symbol, Symbol}
(ФактическиЯ не заметил, что ответ Эндрю имел АтрибутHoldRest
- так это работает так, как я хотел.)