当前位置:  开发笔记 > 编程语言 > 正文

仅评估表达式中的特定头部类型?

如何解决《仅评估表达式中的特定头部类型?》经验,为你挑选了1个好方法。

我记得看到一个表达式来表达并评估每个匹配模式x的头部,同时保留子表达式与非匹配头部的未评估.我再也找不到这个食谱了,有谁知道这样做的正确方法?



1> Dr. belisari..:

这一部分来自Ted Ersek的"聪明的小程序"下的Mathematica技巧.
感谢@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]  

编辑

它似乎也适用于Hold [],但我从未进行过深度测试.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有