std.algorithm.splitter defect: isTerminator version does not return BiderectionalRand

monarch_dodra monarch_dodra at gmail.com
Sat Jun 30 07:06:36 PDT 2012


On Saturday, 30 June 2012 at 14:01:08 UTC, Andrei Alexandrescu 
wrote:
> On 6/30/12 7:21 AM, monarch_dodra wrote:
>> The "isTerminator" version of std.algorithm.splitter, eg:
>> auto splitter(alias isTerminator, Range)(Range input)
>>
>> Returns an object that is "only" ForwardRange. This is 
>> especially weird,
>> since the normal "separator" version is bidirectional. 
>> Comparing using a
>> function rather than with a value should have no difference...
>
> I think that may as well be an oversight in the implementation 
> of splitter.
>
> Andrei

Hi Andrei, thanks for the answer.

I would have thought as well. however, upon inspection, it would 
appear the algorithm uses std.range.take, which does not allow 
support for bidirectional ranges. I started another thread about 
it here:
http://forum.dlang.org/thread/pzudyijsfcpwlqermwke@forum.dlang.org

This looks to me like a language (range) defect. I would love to 
hear your thoughts on it.

Kind Regards,
Paul


More information about the Digitalmars-d mailing list