Re: Re: Taking either a sequence or a list
- To: mathgroup at smc.vnet.net
- Subject: [mg63398] Re: [mg63318] Re: Taking either a sequence or a list
- From: "Oyvind Tafjord" <tafjord at wolfram.com>
- Date: Thu, 29 Dec 2005 02:57:29 -0500 (EST)
- References: <dnm29m$89q$1@smc.vnet.net> <dnopf9$2gp$1@smc.vnet.net> <dnrd16$kqf$1@smc.vnet.net> <200512231008.FAA25950@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
----- Original Message -----
From: "Maxim" <m.r at inbox.ru>
To: mathgroup at smc.vnet.net
Subject: [mg63398] [mg63318] Re: Taking either a sequence or a list
>>
>> This definitely looks like an inconsistency:
>>
>> In[1]:= MatchQ[{a}, {__Integer | a}]
>>
>> Out[1]= True
>>
>> In[2]:= MatchQ[{a}, {x : __Integer | a}]
>>
>> Out[2]= False
This is a known issue (inconsistent handling of Alternatives) which is fixed
in future versions.
>>
>> It is also unclear exactly what value is assigned to x here:
>>
>> In[4]:= tmp = {a} /. {x : __} -> x
>>
>> Out[4]= a
>>
>> In[5]:= tmp2 = {a} /. {x : __ | __} -> x
>>
>> Out[5]= Sequence[a]
The result should be "a" in both cases (don't wrap Sequence around
single-element sequences), fixed in future versions (by the same fix as the
above).
>>
>
> Here's another curious inconsistency:
>
> In[1]:= MatchQ[{a, a}, {s_, s_} /; True /; False]
>
> Out[1]= False
>
> In[2]:= MatchQ[{a, a}, {s__, s__} /; True /; False]
>
> Out[2]= True
This is a bug I haven't seen before, involving nested
Conditions/PatternTests surrounding "non-unique" patterns. Will be fixed in
future versions. Thanks for pointing it out.
Oyvind Tafjord
Wolfram Research
>
> Perhaps Mathematica takes some shortcuts when dealing with patterns that
> require a combinatorial search (sequences or Orderless/Flat functions),
> but such 'simplified' handling of certain classes of patterns can produce
> rather strange results.
>
> Maxim Rytin
> m.r at inbox.ru
- References:
- Re: Taking either a sequence or a list
- From: Maxim <m.r@inbox.ru>
- Re: Taking either a sequence or a list