Mostly its enough to set (=) which evaluates the right hand side before
writing the definition
f[x_]=Integrate[1/(1+x^2),x]
?f
ArtTan[x]
The standard SetDelayed[ a,b ] - definitions don't evaluate b.
You can always write
SetDelayed@@{a, FullSimplify[b] }
to force b to be reduced to the simplest explicit form before making the
definition with :=.
But sometimes one wants to evaluate an expression but define the
expression with free patterns not to be evaluated.
For this case the best method is to use Evaluate, a function that
overides the Hold-Attribute and forces Hold-arguments in functions to
evaluated during input time
g[x_,a_ ]:= Integrate[1/(a + x^2),x]
h[x_,a_] := Evaluate[Integrate[1/(a + x^2),x]]
Unfortunately Mathematica lacks the input Attribute "Immediate", so
useful in the language FORTH.
This makes it very complicated to force the parser to evaluate certain
functions always regardless of Hold Attributes of function expression
are fed to.
The only workaround I see is to use the mouse selecting and
Shift+Contol+Enter replacement shortcut that Evaluates an expression in
the input line already and replaces it there with its current value,
text-symbolically
j[x_,a_]:= Shift+Ctr+Enter("FullSimplify[Integrate[1/(a + x^2),x]]")
--
Roland Franzius