Thread overview
iota where step is a function
May 24, 2023
Ben Jones
May 24, 2023
Rene Zwanenburg
May 25, 2023
anonymouse
May 25, 2023
anonymouse
May 25, 2023
Ben Jones
May 24, 2023

Is there a range like iota in phobos where step is a function? I want to specify begin/end and have the "step" be next = fun(prev). Should be easy to write, but don't want to reinvent the wheel.

May 24, 2023

On Wednesday, 24 May 2023 at 16:39:36 UTC, Ben Jones wrote:

>

Is there a range like iota in phobos where step is a function? I want to specify begin/end and have the "step" be next = fun(prev). Should be easy to write, but don't want to reinvent the wheel.

I think you’re looking for either recurrence() or sequence(), also defined in std.range.

May 25, 2023

On Wednesday, 24 May 2023 at 16:39:36 UTC, Ben Jones wrote:

>

Is there a range like iota in phobos where step is a function? I want to specify begin/end and have the "step" be next = fun(prev). Should be easy to write, but don't want to reinvent the wheel.

import std.stdio;
import std.range: iota;

void main()
{
    iota(10, 0, -1).writeln;
}
May 25, 2023

On Thursday, 25 May 2023 at 00:18:44 UTC, anonymouse wrote:

>

On Wednesday, 24 May 2023 at 16:39:36 UTC, Ben Jones wrote:

>

Is there a range like iota in phobos where step is a function? I want to specify begin/end and have the "step" be next = fun(prev). Should be easy to write, but don't want to reinvent the wheel.

import std.stdio;
import std.range: iota;

void main()
{
    iota(10, 0, -1).writeln;
}

I think I misunderstood what was being asked here.

May 25, 2023

On Thursday, 25 May 2023 at 00:39:02 UTC, anonymouse wrote:

>

I think I misunderstood what was being asked here.

My particular use case is to step using * rather than +, so something like for(i = 1; i < N; i *= 2). sequence worked for what I was doing well enough