Hi,
I'm new to D2 ranges but have been following D for some time. I'm posting 
here because I want to check if I'm doing anything wrong before filing a 
bug.

The code below is a test case I made after hitting the problem in real 
code. Basically the pyramid recursive function should print out:
[1, 2, 3]
[1, 2]
[1]

This works fine when calling with an int[] range, but calling with
SList!int seems to make the compiler hang, eating up memory.

Should I file a bug?


import std.stdio;
import std.range;
import std.container;

void pyramid(Range)(Range items)
{
        if (items.empty)
                return;
        writeln(items);
        auto len = walkLength(items);
        auto r = take(items, len - 1);
        pyramid(r);
}

void main()
{
        /* array version is fine */
        int[] arr = [1, 2, 3];
        pyramid(arr[]);
        
        SList!int list = [1, 2, 3];
        pyramid(list[]);        /* infinite loop with dmd 2.049 */
}

Reply via email to