       Re: Unevaluated functions

• To: mathgroup at smc.vnet.net
• Subject: [mg109343] Re: Unevaluated functions
• From: Albert Retey <awnl at gmx-topmail.de>
• Date: Thu, 22 Apr 2010 06:43:51 -0400 (EDT)
• References: <hqou0u\$9g5\$1@smc.vnet.net>

```Hi,

> In Mathematica when a function returns unevaluated the "return value"
> is the name of the function with arguments.

you should understand that a function definition is nothing but a
replacement rule in Mathematica. Evaluation means that all stored
replacement rules are tried on a given expression until it doesn't
change anymore. The result that you see is not a return value but the
original expression because no pattern will match and no "function call
is executed".

> How do we control such output? Can we suppress it? How do we change
> the usual string for something like "N/A"?

what you see is no string but an expression. There are plenty ways to
change the behavior of Mathematica in this respect, but they differ a
lot in what they really do. To give you a useful answer you would need
to explain a little better what you try to achieve and why you don't
want to "see" the unevaluated expressions. Here are two possibilities
which behave very different:

1) for a given function, add a rule that replaces "everything else" with
the desired "unevaluated" result:

ClearAll[f];
f[x_]:=x^2;
f[___]:="N/A";

test:

f[a]
f[a,b]

2) define a format rule. Note that this will only change the appearance
in the notebook, not the actual "return value":

ClearAll[g];
Format[g[___]]:="N/A";
g[x_]:=x^2;

test:

g[a]
g[a,b]