Bug with Sequence and Assignment by Part...
- To: mathgroup at smc.vnet.net
- Subject: [mg121615] Bug with Sequence and Assignment by Part...
- From: BernieTheJet <berniethejet at gmail.com>
- Date: Thu, 22 Sep 2011 07:26:18 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
If one patches a list of items into a list using Sequence[], it appears that Mathemaitca doesn't properly update the data structure: temp = Range[3]; temp[[2]] = Sequence @@ {a, a, a}; temp as expected : -> {1, a, a, a, 3} FullForm[temp] also looks right: -> List[1,a,a,a,3] As does: Length[temp] -> 5 Ok, so far all is fine. But subsequent additions to the same place do not increase the length of temp, as one might expect: temp[[2]] = Sequence @@ {b, b, b}; temp FullForm[temp] -> {1, b, b, b, 3} and -> List[1,b,b,b,3] And, despite the Length of temp being '5', in fact there is no way to put anything into position '5' of temp: Length[temp] -> 5 temp[[5]] = Sequence @@ {c, c, c} -> Set::partw: Part 5 of {1,Sequence[b,b,b],3} does not exist. >> Here we finally see what is going on, somewhere temp is being stored as {1,Sequence[b,b,b],3}, but all the functions that go to request info from it first perform the evaluation of Sequence hence returning the expected results. One can force Mathematica to sort things out with the otherwise meaningless: temp=temp Surely I am not the first to encounter this, and surely it constitutes at least one bug, (and surely it is shouldn't be in Mathematica 8!). I mean, it seems to me that FullForm and Length should also detect the presence of Sequence and act differently than they do here. Bernard
- Follow-Ups:
- Re: Bug with Sequence and Assignment by Part...
- From: Leonid Shifrin <lshifr@gmail.com>
- Re: Bug with Sequence and Assignment by Part...