On Saturday, 30 May 2015 at 06:50:09 UTC, Ali Çehreli wrote:
On 05/29/2015 06:07 PM, Dennis Ritchie wrote:

> Hi,
> This code prints the arrays:
> [5]
> [6]
> [7]
>
> import std.stdio, std.algorithm;
>
> static int idx;

Do you want to share that for the first element of every two-element array or do you want to start from 0 for every range?

I want to share...

> void walk(R)(R range) {
>      while (!range.empty) {
>          range.front;
>          range.popFront;
>          ++idx;
>      }
> }

As a reminder, there is also the recent 'each', which is eager as well.

But I want to do this is to `map` :)

> void main() {
>      [5, 6, 7].map!(a => [a].writeln).walk;
> }
>
> How should I apply mixins to `range.front` to the program to
print the
> arrays:
> [0, 5]
> [1, 6]
> [2, 7]

Unless mixin required for another reason, there are other ways of achieving the same.

I just want to present the results of the intermediate performance (which I plan to reach through the mixin) `range.front` as a string, to then modify it with the help of mixin to get directly to the array.

> Ie I want to get something like this:
>
> void walk(R)(R range) {
>      while (!range.empty) {
>          // mixin(`[idx ~ "mixin("range.front")"[1 .. $]);`);
>          range.popFront;
>          ++idx;
>      }
> }
>
> Can I do this?
>
> -----
> Thank you for the function `walk` Mark Isaacson of
presentation DConf 2015:
> http://dconf.org/2015/talks/isaacson.pdf

The following program produces the desired output twice. The first one starts from 0 for the index, the second one shares the index as in your code.

import std.stdio, std.algorithm, std.range;

void main() {
    zip(sequence!"n", [5, 6, 7])
        .map!(a => [a.expand])
        .each!writeln;

    static int idx;

    [5, 6, 7]
        .map!(a => [idx++, a])
        .each!writeln;
}

Thank you for your examples, but I want to do something else.

Ie I want to access the intermediate generation `range.front` with two mixins or by other means. `range` is of type `MapResult!(__lambda1, int[])([5, 6, 7], null)` — I want to get the generation of this intermediate, i.e. something like `range.front` --> `[5].writeln` and present `[5].writeln` as a string, to modify the line like so `[5].writeln` --> `[5].writeln`[1 .. $] --> `[idx ~ `[5].writeln`[1 .. $]` --> `[idx, 5].writeln` with the help of mixins. :)

I want to access the intermediate generation `range.front`. Is it possible? :)

Reply via email to