Re: Position different in 5.0 and 5.1?

*To*: mathgroup at smc.vnet.net*Subject*: [mg56079] Re: Position different in 5.0 and 5.1?*From*: dh <dh at metrohm.ch>*Date*: Fri, 15 Apr 2005 04:47:12 -0400 (EDT)*References*: <d3lraa$s6b$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Hi Julia, It is rather wired, but that it worked in 5.0 should be called a bug. Here is why: Consider what you feed to StringTake by: Position[{"asd", "dsa"}, x_ /; (Print[FullForm[x]]; StringTake[x, 1] == "a")] you will see that StringTake receives e.g. "List" as argument and should complain. The reason is that "Position" analyzes the whole expression including the head. You only want to look at the strings inside the list. This can be specified e.g. by x_List: Position[{"asd", "dsa"}, x_String /; (StringTake[x, 1] == "a")] Sincerely, Daniel J R Gog wrote: > I've recently upgraded from 5.1 from 5.0 and have found that some of my old > notebooks don't seem to work. I think I have the essence of what I'm utterly > confussed about in this example: > Position[{"asd", "dsa"}, x_ /; (StringTake[x, 1] == "a")] > > What I want is the position of list entries which have first character "a". > In 5.0, this line works. In 5.1, I get an error that StringTake is being fed > a string. > > I can't find any documentation that explains what has changed to have this > effect. I'm sure I've missed something obvious, but if anyone can explain to > me what has changed, it would be very helpful indeed. I know I can do > everything some other way, but I need to know exactly what old stuff I need > to change! > > > > Thanks > > > > Julia Gog > >