A D2 program: import std.stdio, std.algorithm; void main() { dchar[] data = "abcde"d.dup; writeln(data); writeln(remove(data, 0)); writeln(data); writeln(remove(data, 2)); writeln(data); } With DMD 2.056beta3 it prints: abcde bcde bcdee bcee bceee Expected output: abcde bcde bcde bce bce Or maybe it's better for remove() to return void, to underline its in-place nature (this is often done in Python, where functions the modify da in-place usually return just None, and functions with a name that ends with "ed" create new data and return it, like the sort/sorted pair): import std.stdio, std.algorithm; void main() { dchar[] data = "abcde"d.dup; writeln(data); data.remove(0); writeln(data); data.remove(2); writeln(data); } Expected output: abcde bcde bce This is similar to what happens in Python2: >>> data = ['a', 'b', 'c', 'd', 'e'] >>> del data[0] >>> data ['b', 'c', 'd', 'e'] >>> del data[2] >>> data ['b', 'c', 'e']
I didn't fully understand the situation, as it often happens: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=30277 Yet I think the problem exists, and there are Python (and other languages) programmers too coming to D. See some comments, with an alternative proposal too, about a replaceInPlace() function: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=30281
From the same thread: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=30294 Steven Schveighoffer: > Here is the resulting array and final state of a: > > import std.stdio, std.algorithm; > void main() { > int[] a = [ 0, 1, 2, 3 ]; > writeln( remove!(SwapStrategy.unstable)(a, 1)); > writeln(a); > } > > output: > > [3, 1, 2] > [3, 1, 2, 3] > > Clearly, index 0 was removed, not index 1. Please file a bug.
(In reply to comment #2) > From the same thread: > > http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=30294 > > Steven Schveighoffer: > > > > > Clearly, index 0 was removed, not index 1. Please file a bug. This is not a design bug, it's an actual bug in the code (does not work as designed), it should be separate from this enhancement request.
(In reply to comment #3) > (In reply to comment #2) > > From the same thread: > > > > http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=30294 > > > > Steven Schveighoffer: > > > > > > > > Clearly, index 0 was removed, not index 1. Please file a bug. > > This is not a design bug, it's an actual bug in the code (does not work as > designed), it should be separate from this enhancement request. Right, it's my mistake of mixing two different things in the same issue. Sorry. I'll open another issue. Please ignore Comment #2.
To clear up this bug report I close it and replace it with a a bug report and a more focused enhancement request. See bug 6956 instead of Comment #2. See also bug 6957.