Is there an easy way to combine pure functions into a single pure function? For example, say I have
f = #1^2 &;
g = #1 - 2 &;
and I want to define a new pure function h that is the difference of the two functions (as currently defined, so that h will not change if f or g are redefined). h = f - g doesn't work because it doesn't combine them into a single function. The best I've been able to come up with is
h = Evaluate[f@# - g@#] &
but this seems a bit hack-ish. Is there a more natural way to combine them?
Edit: I was looking for something where Mathematica performs its automatic simplifications, just as if we'd had f = x^2; g = x - 2; h = f - g, but for pure functions.

#1^2 + #1 - 2 &? And see http://mathematica.stackexchange.com/questions/33112/how-combine-pure-functions-of-several-slots – David G. Stork Apr 07 '17 at 01:43h = f@# + g@# &? – wxffles Apr 07 '17 at 02:05Evaluate. Probably not, and now the code seems more natural, so if you post an answer I'll accept it. – tparker Apr 07 '17 at 02:15hto not be affected by later changes tofandgis an important point you should put in the question. – wxffles Apr 07 '17 at 02:24f + gyou can useh = Through @* (f+g), but with-the issue is thatfandgare a bit deeper inside the expression tree (sincef-gis reallyPlus[f, Times[g, -1]]). – Martin Ender Apr 07 '17 at 09:50