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
- References:
- Re: Rule-based programming: declare variables to be a number
- From: David Bailey <dave@Remove_Thisdbailey.co.uk>
- Re: Rule-based programming: declare variables to be a number