7
我記得看到一個配方來表達和評估匹配模式x的每個Head,同時留下不匹配頭部的子表達。我再也找不到這個配方,有沒有人知道正確的做法?僅評估表達式中的特定頭類型?
我記得看到一個配方來表達和評估匹配模式x的每個Head,同時留下不匹配頭部的子表達。我再也找不到這個配方,有沒有人知道正確的做法?僅評估表達式中的特定頭類型?
這一個是從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]
編輯
這似乎與按住[]也行,但我從來不跑了深刻的考驗。
這是在Ted Ersek的Mathematica技巧下的「聰明的小程序」中討論的。 http://www.verbeia.com/mathematica/tips/Tricks.html – tomd 2010-11-23 16:16:28