[RFC] Add an operator for ranges to D. Pros and cons?

Dejan Lekic dejan.lekic at gmail.com
Wed Nov 7 05:27:59 PST 2012


On Wednesday, 7 November 2012 at 13:21:36 UTC, Peter Alexander 
wrote:
> On Wednesday, 7 November 2012 at 13:07:13 UTC, Dejan Lekic 
> wrote:
>> Therefore I would like to know what do you think about the 
>> idea of having additional operator exclusively made for 
>> ranges? This operator would make it obvious that data are 
>> "streamed" (lack of better term) among ranges.
>>
>> The first name I could come up with was "opArrow" but "opData" 
>> could also be okay, and operator would be either "~>" or "->".
>>
>> This would give us an obvious, unambiguous statement:
>>
>> Console.in ~> filter1(param) ~> fooRange ~> Console.out;
>> // Console is an imaginary class/struct
>>
>> Or:
>> arr ~> odd ~> random ~> randomOdd;
>
> I'm confused. So does this new operator just do the same thing 
> as dot, but only work with ranges? Or does it have additional 
> useful semantics?

UFCS is what makes that code-mess I started with.
Imagine having ranges be part of some objects. I already gave an 
example of Console.in and Console.out. But say they are even 
deeper, so you have to refer to them using obj1.member.range 
notation, and now imagine using dot operator in some complex 
operation on ranges where you chain 5 or more ranges... All those 
dots and parenthesis can make head boil (at least it does make my 
head boil, not to mention that my colleague can's easily 
understand that statement at all written using UFCS).



More information about the Digitalmars-d mailing list