What is the simplest way to obtain function obect of a given function?

Suppose I have a function p of some arguments:

p[x_,y_]:= (* something *)


Now I with to pass this function as an object to another function, like derivative:

Derivative[0, 2][p[#1, #2] &]


Here I used an expression

p[#1, #2] &


to create a function object.

Can I form it simpler? Neither p not p& worked.

What if I want to pass a function of variable number of arguments to another function?

• Could you elaborate on what you mean by p didn't work? I tried p[x_, y_] := x^5 y^7; Derivative[0, 2][p] and it gives the correct answer. Commented Nov 22, 2014 at 18:13
• If you want to pass the derivative function to another function, just define d02p = Derivative[0, 2][p] and pass d02p to another function. Commented Nov 22, 2014 at 18:13

You can define partial derivatives in specified slots without using #1 or #2:

p[x_, y_] := x^5 y^7;
d02p = Derivative[0, 2][p];
d02p[a, b]


which returns

42 a^5 b^5


Likewise, to obtain the pure function fDer for the mixed partial derivative of a function f of vector argument, try this:

f[list_] := (Times @@ list)^8;
ind = RandomInteger[{0, 8}, 10];
fDer = Derivative[ind][f];
fDer[Subscript[a, #] & /@ Range[10]]


which produces $$122787561599926272000 a_1^7 a_3^6 a_4 a_5^8 a_6^6 a_7^6 a_8^8 a_9^7 a_{10}^3.$$