Arguments of operatorp



There is a function scanex() in pw.mac.  It will walk an expression and 
apply a function which you define to each part of the expression.  For 
example.

(%i66) load(abs_integrate)$
(%i67) ex:gamma(diff(f(integrate(h(x)*x^2+y,x),x)))$
(%i68) F(_e):=(L:[],scanex(lambda([x],if safe_op(x)#false then 
L:endcons(safe_op(x),L)),_e),setify(L))$
(%i68) F(ex);
(out68) {*, +, ^, f, h, del, derivative, gamma, integrate}

In this case the function applied is a lambda expression that just gathers a 
list of operators it encounters. If you want to do something else with the 
parts it may be possible to just change the lambda function.

HTH,

Rich

PS Here is scanex();

scanex(__f,__e):=
block
(
    [inflag : true, _p],
    if safe_op(__e) # false then
    (
        apply(__f, [__e]),
        for _p in __e do (
            if safe_op(_p) # false then
            (
                scanex(__f, _p),
                apply(__f, [_p])
            )
            else
                apply(__f, [_p])

        )
    )
    else
        apply(__f, [_p])

)$


-----Original Message----- 
From: J?rome Laurens
Sent: Tuesday, June 19, 2012 2:15 AM
To: maxima at math.utexas.edu
Subject: Arguments of operatorp

Hi list,

operatorp documentation is very short even on the web.

It seems that the second argument or operatorp is a string aka the name of 
the operator
for example operatorp(a+b,"+") returns true
but I don't know how to recognize diff or integrate operators
for example operatorp(integrate(...),"integrate"), 
operatorp(diff(...),"diff'), operatorp(diff(...),"derivative") both return 
false.

Maybe this is intended behaviour but in that case, how would I walk an 
expression to find the integrate and diff operators ?

TIA

_______________________________________________
Maxima mailing list
Maxima at math.utexas.edu
http://www.math.utexas.edu/mailman/listinfo/maxima