title: Partial evaluation in Mathematica
body: <p>I have a differential operator that acts on two functions. To simplify the problem let's say that my operator is</p>
  
  <pre><code>A[F_,G_] := D[F,x] D[G,y]
  </code></pre>
  
  <p>I want to be able, if I know F, to define a differential operator AF such that AF[G] is equal to A[F,G]. The obvious way is</p>
  
  <pre><code>AF[G_] := A[F,G]
  </code></pre>
  
  <p>which works without any problem. But what I would really like is to arrange things so that when I call AF with different arguments G1, G2, ... the derivative D[F,x] is not re-computed every time but only once. Moreover, I would like the definition of AF to not depend on the particular form of A, since A is passed as an argument to my function.</p>
  
  <p>I have read the help on Hold, HoldAll, Evaluate etc. but I cannot put these things together to get what I want. I don't even know if what I want is possible in Mathematica.</p>