Re: Evaluation question

*To*: mathgroup at smc.vnet.net*Subject*: [mg82208] Re: Evaluation question*From*: Szabolcs Horvát <szhorvat at gmail.com>*Date*: Mon, 15 Oct 2007 01:19:26 -0400 (EDT)*References*: <200710120656.CAA04613@smc.vnet.net> <fepuqv$hvl$1@smc.vnet.net> <47109042.2000302@gmail.com> <AF26334E-9827-4055-8FEF-501F79F783AE@mimuw.edu.pl> <fesr61$pjb$1@smc.vnet.net>

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[2] and In[3] 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[1]:= NumericQ[Unevaluated[1+2]]//Trace >>> Out[1]= {NumericQ[1+2],False} >>> >>> In[2]:= SetAttributes[f,NumericFunction] >>> >>> In[3]:= NumericQ[f[1,2]]//Trace >>> Out[3]= {NumericQ[f[1,2]],True} >>> >>> In[4]:= NumericQ[Unevaluated[f[1,2]]]//Trace >>> Out[4]= {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

**References**:**Evaluation question***From:*Yaroslav Bulatov <yaroslavvb@gmail.com>