MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Rule-based programming: declare variables to be a number

  • To: mathgroup at smc.vnet.net
  • Subject: [mg80843] Re: Re: Rule-based programming: declare variables to be a number
  • From: Hendrik van Hees <hees at comp.tamu.edu>
  • Date: Tue, 4 Sep 2007 03:40:42 -0400 (EDT)
  • References: <fb83lf$82d$1@smc.twtelecom.net> <200709020651.CAA25850@smc.twtelecom.net> <fbgmuq$9d7$1@smc.vnet.net>

I want to thank all those who have answered my question. NumericQ does
precisely what I like to do. Thanks again for the quick help. I hope,
you are right that I won't run into trouble with these constructions
later ;-).

Another question: I've looked for books on the subject of rule-based
programming with Mathematica. There are some on the market. Which one do you
think the best for tasks like the one, I described in my posting?

Andrzej Kozlowski wrote:

> 
> On 2 Sep 2007, at 08:51, David Bailey wrote:
> 
>> As others have commented, it is not a good idea to write code like
>> NumericQ[g]=True because this changes the basic operation of
>> Mathematica. For example, such code might work OK until you try to
>> combine it with some more code that needs NumericQ for something
>> else!
>>
>> David Bailey
>> http://www.dbaileyconsultancy.co.uk
> 
> 
> Who are the "others"?
> Anyway, I completely disagree with this statement in this particular
> context.
> 
>   NumericQ has clearly been designed with this in mind. Note, for
> example, that althou NumericQ is Protected, a definition like
> 
> NumericQ[a]=True
> 
> does not require unprotecting NumericQ. Moreover, it does not add a
> DownValue to NumericQ.
> 
> NumericQ[g] = True;
> DownValues[NumericQ]
> {}
> 
> 
> There are plenty of other reasons to believe that all all
> theseproperties of NumericQ are designed precisely for this type of
> use. Besides, I have another reason to think that no probems of the
> kind you are imagining would happen in this case: I have been using
> NumericQ inprecisly this way for about 10 years in numerous notebooks
> without any problems.
> 
> Note alo the post from Carl Woll which, I think, can be regarded as
> an "offcial" WRI authorization for this kind of usage ;-)
> 
> (However, note also that using Carl's definition:
> 
> In[19]:= g /: NumericQ[g] = True;
> 
> Dos not actually add an UpValue to g:
> 
> UpValues[g]
> {}
> 
> and I don't think it has any advantage over the more straightforward
> 
> NumericQ[g] = True;
> 
> 
> I am sure all this is deliberate design, and even though it may not
> be easy to explain, it is very convenient.
> 
> Andrzej Kozlowski

-- 
Hendrik van Hees                        Texas A&M University
Phone:  +1 979/845-1411                 Cyclotron Institute, MS-3366
Fax:    +1 979/845-1899                 College Station, TX 77843-3366
http://theory.gsi.de/~vanhees/faq       mailto:hees at comp.tamu.edu


  • Prev by Date: Re: Rule-based programming: declare variables to be a number
  • Next by Date: Re: listplot and legend (again)
  • Previous by thread: Re: Rule-based programming: declare variables to be a number
  • Next by thread: Re: Rule-based programming: declare variables to be a number