       Re: Evaluation question

• To: mathgroup at smc.vnet.net
• Subject: [mg82253] Re: Evaluation question
• From: Yaroslav Bulatov <yaroslavvb at gmail.com>
• Date: Tue, 16 Oct 2007 03:29:43 -0400 (EDT)
• References: <200710120656.CAA04613@smc.vnet.net><fepuqv\$hvl\$1@smc.vnet.net>

```Perhaps the following example makes more more sense --

Block[{f},
SetAttributes[f, NumericFunction];
f[1, 2] // NumericQ // TracePrint;
Unevaluated[f[1, 2]] // NumericQ // TracePrint;
]

In the first example, the arguments of f are evaluated.
In the second example, Unevaluated wrapper prevents evaluation of the
arguments, so NumericQ doesn't "know" that f's arguments are numeric.

Yaroslav

On Oct 14, 10:30 pm, Andrzej Kozlowski <a... at mimuw.edu.pl> wrote:
> I think this involves a rather subtle difference between an
> expression and its value. (It is sometimes obscured by the fact that
> soem expressions evaluate to themselves so are their own values). In
> this case, it is the values of Plus that are considered numerical,
> but values are obtianed after evaluation. The unevaluated expression
> Plus[1,2] is not itself numerical.
>
> Andrzej Kozlowski
>
> On 14 Oct 2007, at 20:10, Szabolcs Horv=E1t wrote:
>
> > Andrzej Kozlowski wrote:
> >> On 14 Oct 2007, at 08:00, Andrzej Kozlowski wrote:
> >>> Wihtout evaluation 1+2 is just a symbol and not the number 3 so
> >>> NumericQ returns False.
> >> I should have been more precise. Unevaluated 1+2 is an expression
> >> (rather than a symbol); in fact it is the expression Plus[1,2],
> >> which of course is not numeric. It's value is, of course, numeric, =
> >> but that is obtained only after evaluation.
>
> > But Plus has the attribute NumericFunction, therefore it should be
> > considered "numerical" whenever all of its arguments are numerical.
>
> > For example, see In and In below.  f[1,2] stays unevaluated,
> > but NumericQ[f[1,2]] still returns True because 'f' has the
> > attribute NumericFunction, and all of its arguments (1 and 2) are
> > numerical.
>
> >>>> In:= NumericQ[Unevaluated[1+2]]//Trace
> >>>> Out= {NumericQ[1+2],False}
>
> >>>> In:= SetAttributes[f,NumericFunction]
>
> >>>> In:= NumericQ[f[1,2]]//Trace
> >>>> Out= {NumericQ[f[1,2]],True}
>
> >>>> In:= NumericQ[Unevaluated[f[1,2]]]//Trace
> >>>> Out= {NumericQ[f[1,2]],False}
>
> >>> I do not find this surprising. Wihtout evaluation 1+2 is just a
> >>> symbol and not the number 3 so NumericQ returns False.
>
> > --
> > Szabolcs

```

• Prev by Date: Re: format mixed integers & floats with text styling (see )
• Next by Date: Re: Releasing several Holds simultaneously
• Previous by thread: Re: Evaluation question
• Next by thread: combine implicitplot with findroot