Re: Argument types
- To: mathgroup at smc.vnet.net
- Subject: [mg5368] Re: [mg5345] Argument types
- From: Allan Hayes <hay at haystack>
- Date: Thu, 5 Dec 1996 14:50:14 -0500
- Sender: owner-wri-mathgroup at wolfram.com
From: Olivier Georg <olivier.georg at studi.epfl.ch>
To: mathgroup at smc.vnet.net
Subject: [mg5345] Argument types
> I recently discovered that you could specify the type of the
> arguments of a function being defined. For example, f[x_Integer]
> if you want x to be an integer. There's also List, Real, Complex
> and Symbol. But there's also ?MatrixQ which is not in the
> Mathematica book, to specify a matrix. Are there other types?
Olivier,
_h is matched by anything with head h; this can be explicit for
example h[], h[1],h[1,2,3].
Unfortunately, you can't see 3 in the form Integer[3], but you can
find its head formally:
In[1]:= Head[3]
Out[1]= Integer
The following tests always give True or False
AtomQ DigitQ EvenQ FreeQ
IntegerQ IntervalMemberQ LetterQ ListQ
LowerCaseQ MachineNumberQ MatchQ MatrixQ
MemberQ NameQ NumberQ OddQ
OptionQ OrderedQ PolynomialQ PrimeQ
SameQ StringMatchQ StringQ SyntaxQ
TrueQ UnsameQ UpperCaseQ ValueQ
Then there are tests that remain unevaluated when the question
cannot be decided on the information available:
Equal Unequal Less Greater
LessEqual GreaterEqual Positive Negative
NonNegative
For example
In[2]:= Positive[a]
Out[2]= Positive[a]
However, you can always arrange that the output is always True or
False by using TrueQ:
In[3]:= TrueQ[Positive[a]]
Out[3]= False
You can sometimes combine these:
For example test if the entries in a matrix are all numbers:
In[4]:= MatrixQ[{{1},{2}},NumberQ]
Out[4]= True
In[5]:= MatrixQ[{{1},{a}},NumberQ]
Out[5] = False
Allan Hayes
hay at haystack.demon.co.uk
http://www.haystack.demon.co.uk