Splitter quiz / survey -- PLEASE NO

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Apr 27 11:27:39 PDT 2009


downs wrote:
> Andrei Alexandrescu wrote:
>> bearophile wrote:
>>> Andrei Alexandrescu:
>>>> Splitter does what Perl's split does: 2.
>>> Perl has to die. This is Python:
>> This answer is wrong for a number of reasons. First comes the fallacy
>> that if Perl "has to die", everything Perl did was wrong. Second comes
>> the fallacy that if Python is overall better than Perl, everything it
>> does is better than everything Perl does.
>>
>>>>>> ",a,b,".split(",")
>>> ['', 'a', 'b', '']
>>>
>>> My lazy xsplit too works like that. I strongly vote for (4).
>> Why? I'd be willing to change things no problem, but "perl must die,
>> here's python" just doesn't seem to have much persuasive power.
>>
>>
>> Andrei
> 
> It is my strong opinion that Perl did this wrong. Why? Because it quite strongly violates user expectations.
> 
> Please keep magic out of D as far as possible. If unavoidable, mark it with big warning signs. Magic is the *enemy* of comprehension.
> 
> Microsoft once experimented with tools that tried to predict what you wanted instead of what you _said_.
> 
> The result was *Clippy*. I don't need to tell you how that went.
> 
> FWIW: If I wanted to remove trailing spaces, I'd use the well-known .strip() function.

I have been convinced. I will modify splitter to do (4), i.e., prepend 
or append an empty element if there's a leading, respectively trailing, 
separator. Thanks to all for destroying me :o).

Actually, Brad, since it was your idea, I suggest you to operate the 
change and add yourself to the list of contributors to std.algorithm.

I have constructed an information-theory-based argument that was alluded 
to by some posters without being clearly stated: if splitter does (4) 
and the separator is a character or a string, then you can reconstruct 
the original input from its output. So (4) is the behavior that loses 
the least information. (Brad was on a similar track by stating that it's 
desirable for splitter to produce the same number of items whether ran 
forward or in reverse.)


Andrei



More information about the Digitalmars-d mailing list