Thread overview
[Issue 6849] New: std.algorithm.remove design
October 25, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849

           Summary: std.algorithm.remove design
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody@puremagic.com
        ReportedBy: bearophile_hugs@eml.cc


--- Comment #0 from bearophile_hugs@eml.cc 2011-10-25 04:21:13 PDT ---
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']

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 25, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849



--- Comment #1 from bearophile_hugs@eml.cc 2011-10-25 16:27:57 PDT ---
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

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 26, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849



--- Comment #2 from bearophile_hugs@eml.cc 2011-10-26 10:14:57 PDT ---
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.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 26, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849



--- Comment #3 from Steven Schveighoffer <schveiguy@yahoo.com> 2011-10-26 10:25:44 PDT ---
(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.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 26, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849



--- Comment #4 from bearophile_hugs@eml.cc 2011-10-26 15:07:02 PDT ---
(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.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 16, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849



--- Comment #5 from bearophile_hugs@eml.cc 2011-11-15 16:57:35 PST ---
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.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 16, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6849


bearophile_hugs@eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------