On Mon, 02 Jun 2014 15:47:02 -0400, Logesh Pillay <lp.court.jes...@gmail.com> wrote:

Issue has nothing to do with recursion. That's only where I keep seeing it.

eg a function to generate combinations.

import std.stdio;

int[3] t;

void foo (int i) {
   if (i == 3)
     writef("%s\n", t);
   else foreach (x; 0 .. 3) {
     t[i] = x;
     foo(i+1);
   }
}

void main() {
   foo(0);
}

In C, I could put in the equivalent for statement for foreach, t[i] as the iterating variable. I won't need x which exists as a middleman only and save myself two lines.

OK, I get it. You want to do:

foreach(t[i]; 0 .. 3)

But this doesn't work.

This should (the equivalent for C):

for(t[i] = 0; t[i] < 3; ++t[i])

I'm trying to think of a way to do this without loops, but not sure. Note that foreach is expected to be given a new variable to declare, so you can't foreach with an existing variable on the left.

-Steve

Reply via email to