1.17 pattern example 12

Use pattern to square only numbers in a list.

L:=[2.3,4,7/8,a,b]; 
map( proc(X) local la,x; 
     if patmatch(X, x::numeric,'la') then 
        eval(x,la)^2; 
     else 
        X; 
     fi; 
     end proc, L 
    ); 
 
       [5.29, 16, 49/64, a, b]
 

In Mathematica

{2.3, 4, 7/8, a, b} /. (x_ /; NumberQ[x]) -> x^2 
 
   {5.29,16,49/64,a,b}