1.10 pattern example 5

Given f(a)+f(b) transform it using pattern f(x::anything)->x^2 to obtain a^2+b^2

In Maple

expr:=f(a)+f(b); 
map( proc(X) local la,x; 
     if patmatch(X,f(x::anything),'la') then 
        eval(x,la)^2; 
     else 
        NULL; 
     fi; 
     end proc, expr); 
 
 
           a^2 + b^2
 

In Mathematica

f[a] + f[b] /. f[x_] -> x^2 
 
    a^2+b^2