在枫木中,可以使用自定义规则简化表达,例如
> simplify(x*y,{x=y+1})
y^2+y
相比之下,我需要的是能够传递功能形式的规则,例如
> wantedcommand(f(a)*f(b), f(x)=g(x+3))
g(a+3)*g(b+3)
有人知道如何实现这个目标吗?
答案 0 :(得分:3)
applyrule(f(x::anything)= g(x+3), f(a)*f(b));
答案 1 :(得分:1)
ee := f(a)*f(b):
applyrule(f(x::anything)=g(x+3), ee);
g(a + 3) g(b + 3)
subsindets(ee,specfunc(anything,f),t->g(op(t)+3));
g(a + 3) g(b + 3)