2010-11-22 2 views
7

Я помню, как я видел рецепт, чтобы выразить выражение и оценить каждую главу, которая соответствует шаблону x, оставляя невыраженные подвыражения с несогласованными головами. Я больше не могу найти этот рецепт, кто-нибудь знает правильный способ сделать это?Оценка только определенного типа головы в выражении?

ответ

5

Этот объект от Ted Ersek's Mathematica Tricks under "Clever Little Programs".
@TomD для указателя.

EvaluatePattern[expr_,pattn_]:=expr/.Pattern[p, pattn]:>With[{eval=p},eval/;True] 

In[368]:= test = HoldForm[7 (1 + 2 - 2^2) (8 + 8)]; 
      EvaluatePattern[test, _Plus] //InputForm 

Out[369]= HoldForm[7*-1*16] 

Редактировать

Это, кажется, работает также с ДЕРЖАТЬ [], но я никогда не проходил глубокий тест.

+1

Об этом говорится в «Темех Математики Теда Эрсека» под «Умные маленькие программы». http://www.verbeia.com/mathematica/tips/Tricks.html – tomd 2010-11-23 16:16:28

Смежные вопросы