What features of D are you using now which you thought you'd never goint to use?

monarch_dodra monarchdodra at gmail.com
Sun Jun 23 02:10:02 PDT 2013


On Sunday, 23 June 2013 at 04:08:22 UTC, Vladimir Panteleev wrote:
> On Saturday, 22 June 2013 at 20:09:01 UTC, monarch_dodra wrote:
>> #2: Extremelly bad compatibility with simple no 
>> bidir/non-slicing ranges: There is no way to iterate over a 
>> specific part of a range, and making a range out of what was 
>> just iterated over. For example "Get the beggining of this 
>> range until the first x": not possible without slicing.
>
> Not sure if I understood the question correctly, but the way I 
> understood it:
>
> 1) To iterate over a specific part of a non-random-access 
> range, you can use `drop` in conjunction with `take` or 
> `takeExactly`.
>
> 2) To get an existing foreach loop to emit a range, move its 
> body to the predicate of `map`, and break conditions to the 
> predicate of `until` / `countUntil`.
>
> 3) As I understand, "get the beggining of this range until the 
> first x, without slicing" is what `until` (or `countUntil` + 
> `take`) does.

All of these will *iterate* over part of said range, but none 
will actually return the subrange I iterated on.

         V
[ .  .  X  .  .  .  .  .  .  .  . ]

I want:
[ .  .  X ]

D gives me:
       [ X  .  .  .  .  .  .  .  . ]

countUntil + take can kind of mitigate the problem, but that 
warps the type system: The type of take is not the type of the 
range.


More information about the Digitalmars-d mailing list