MathGroup Archive 2005

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

Search the Archive

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
> 
> 


  • Prev by Date: Re: Position different in 5.0 and 5.1?
  • Next by Date: Re: Algebra in Mathematica
  • Previous by thread: Re: Position different in 5.0 and 5.1?
  • Next by thread: Re: Position different in 5.0 and 5.1?