RE: Flat Strings

*To*: mathgroup at yoda.physics.unc.edu*Subject*: RE: Flat Strings*From*: withoff*Date*: Tue, 1 Jun 93 09:58:31 CDT

> I found that with the attribute > Flat, FlatString["a","b","c"] was not matching the pattern on the LHS of the > definition above. Interestingly, when I removed "String" from the argument > patterns, it DID match! Mmm. So I've constructed the following example > which certainly seems to illustrate a bug: > > Mathematica 2.1 for NeXT > Copyright 1988-92 Wolfram Research, Inc. > > In[1]:= Attributes[f] = {}; > > In[2]:= MatchQ[ f[1], f[_Integer] ] > > Out[2]= True (* Fine. *) > > In[3]:= Attributes[f] = {Flat}; > > In[4]:= MatchQ[ f[1], f[_Integer] ] > > Out[4]= False (* HUH? *) > > In[5]:= MatchQ[ f[1], f[_] ] > > Out[5]= True (* OK, but we need to specify head *) > > ^^^^ How 'bout it WRI, is this a bug or what? ^^^^ No, this is not a bug, but it is a good demonstration of the use of OneIdentity. In[1]:= MatchQ[ f[1], f[_Integer] ] Out[1]= True In[2]:= SetAttributes[f, Flat] In[3]:= MatchQ[ f[1], f[_Integer] ] Out[3]= False In[4]:= SetAttributes[f, OneIdentity] In[5]:= MatchQ[ f[1], f[_Integer] ] Out[5]= True Another example can be found on page 232 of the Mathematica book. Dave Withoff Wolfram Research