[Date Index]
[Thread Index]
[Author Index]
Re: evaluate to True?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg125940] Re: evaluate to True?
*From*: Andrzej Kozlowski <akozlowski at gmail.com>
*Date*: Sun, 8 Apr 2012 04:16:21 -0400 (EDT)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
*References*: <201204061001.GAA23045@smc.vnet.net> <CAEtRDSfexgBvoLTpXVPv=6B7m_CsNwqhUAWQBvnj4JMimsN-Sg@mail.gmail.com> <201204070959.FAA01206@smc.vnet.net>
Of course there is already a function called "MatchQ". Second, MemberQ
can actually be used for "literal" selection of the kind you seem to be
thinking about.
For example:
MemberQ[{0, 1, 2}, expr_]
True
but
MemberQ[{0, 1, 2}, Verbatim[expr_]]
False
MemberQ[{0, 1, expr_}, Verbatim[expr_]]
True
Thus we can define a "literal" membership checking function as follows:
LiteralMemberQ[expr_, form_] := MemberQ[expr, Verbatim[form]]
Now it behaves the way you expected:
LiteralMemberQ[{0, 1, 2}, 2]
True
LiteralMemberQ[{0, 1, 2}, expr_]
False
and even:
LiteralMemberQ[{0, 1, expr_}, expr_]
True
Andrzej Kozlowski
On 7 Apr 2012, at 11:59, Christoph Lhotka wrote:
> Hello,
>
> yes you are right, I mean MemberQ rather than ModuleQ (please see my
> correction of the post [mg125913]).
>
> In fact the behaviour is consistent with the information you get for
> MemberQ:
>
> In[1]:= ?MemberQ
>
> "MemberQ[list, form] returns True if an element of list matches form,
> and False otherwise."
>
> In fact the function name is misleading (at least to me): form is never
> a member of list if MemberQ
> returns True. If this would be the case my argumentation (below,
> original post) would bring the
> behaviour of the function in troubles if form is the "expression for
> everything".
>
> The misinterpretation of the function due to the name can be the cause
> of severe bugs as seen
> in message [mg125911]. Maybe a name like MatchQ would be more
> appropriate for future versions
> of Mathematica.
>
> Best,
>
> Christoph
>
>
>
>
> On 04/06/2012 02:38 PM, Bob Hanlon wrote:
>> You mean MemberQ rather than ModuleQ. In MemberQ[list, expr_] a blank
>> (with or without a name for the blank) matches anything.
>>
>> {MemberQ[{a}, _],
>> MemberQ[{"a"}, _],
>> MemberQ[{Indeterminate}, _],
>> MemberQ[{ComplexInfinity}, _],
>> MemberQ[{Plot[x, {x, 0, 1}]}, _]}
>>
>> {True, True, True, True, True}
>>
>>
>> Bob Hanlon
>>
>> On Fri, Apr 6, 2012 at 6:01 AM, Christoph Lhotka
>> <christoph.lhotka at fundp.ac.be> wrote:
>>> Hello,
>>>
>>> I found and interesting subject of discussion in the post
>>>
>>> "Bug in pattern test, or I did something wrong?"
>>>
>>>
>>> I could trace back the problem to an issue with ModuleQ.
>>>
>>> Question: Why does
>>>
>>> In[12]:= ModuleQ[{0,1,2},expr_]
>>>
>>> Out[12]:= True
>>>
>>> evaluate to True?
>>>
>>>
>>> My argumentation is as follows:
>>>
>>> On the one hand there could be a chance that expr_ is 0,1 or 2 but on
>>> the other
>>> hand the probability that expr_ is not 0,1 or 2 is even higher. As a
>>> conclusion it should neither
>>> evaluate to True nor to False.
>>>
>>> In other words: Is there any reason why the expression of everything
>>> (named expr)
>>> is contained in the set {0,1,2} ?
>>>
>>> Best,
>>>
>>> Christoph
>>>
>>
>>
>
>
Prev by Date:
**Re: fyi, small note on using Mathematica for object**
Next by Date:
**Re: fyi, small note on using Mathematica for object**
Previous by thread:
**Re: evaluate to True?**
Next by thread:
**Re: evaluate to True?**
| |