MathGroup Archive 1994

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

Search the Archive

Re: Defining a predicate


> The following works:
> 
> 	TableauQ[_] := False
> 	TableauQ[{_Equal..}] := True
> 
> However, the logic of providing a blanket False (TableauQ[_] := 
> False), which is then overridden when appropriate pattern matches, 
> bothers me. Is the explicit False necessary?
> 
> On p. 227 of the good book, Wolfram writes:
> 
> 	An important feature of Mathematica property-testing functions whose 
> names end in Q is that they always return False if they cannot 
> determine whether the expression has the given property. 
> 
>  That behaviour also seems appropriate in my example. Is it possible
> to make user defined predicates exhibit the same behaviour?

Using names that end in Q is a convention; the desired behaviour is not
automatic. Your use of the catchall rule is good programming style.
You should, however, put that rule last. If there were any other rules
with side condition (in the form TableauQ[..] /; cond := ...), the automatic
rule ordering would not work.

Roman Maeder






  • Prev by Date: Help needed in Mathematica
  • Next by Date: unwarranted assumption?
  • Previous by thread: Defining a predicate
  • Next by thread: Re: Defining a predicate