Re: Re: Rule-based programming: declare variables to be a number
- To: mathgroup at smc.vnet.net
- Subject: [mg80822] Re: [mg80797] Re: Rule-based programming: declare variables to be a number
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 3 Sep 2007 06:12:35 -0400 (EDT)
- References: <firstname.lastname@example.org> <200709020651.CAA25850@smc.twtelecom.net>
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
Who are the "others"?
Anyway, I completely disagree with this statement in this particular
NumericQ has clearly been designed with this in mind. Note, for
example, that althou NumericQ is Protected, a definition like
does not require unprotecting NumericQ. Moreover, it does not add a
DownValue to NumericQ.
NumericQ[g] = True;
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:= g /: NumericQ[g] = True;
Dos not actually add an UpValue to 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.
Prev by Date:
Re: Plot, Epilog, and Text
Next by Date:
Re: check inside a loop?
Previous by thread:
Re: Rule-based programming: declare variables to be a number
Next by thread:
RE: Re: Re: Rule-based programming: declare variables to be a number