"Maybe if I turn it around - but then, ugh, no. That's even less of a way to co-opt parameters. Really, it should have just been method arguments, but noo, I wanted my thing to be fancy and distinct to be easy to visualize.
"Feh."
"Alright, let's try this again."
luxbuf init square red
"#define (binary)int i
bool[] brep;
int n=0;
do{n++;}while(pow(2,n)<i);
brep=new bool[n];
do{if(pow(2,n)<=i){i-=pow(2,n); brep[brep.length-n]=1;}}while(--n>-1);
return brep as binary;
#enddef" | luxbuf
cat "#define (int)bool[] b, (int)(binary b as bool[])
int val=0;
for(int i=0;i<b.length;i++){val += b[b.length-i]*pow(2,i);}
return val;
#enddef" luxbuf
"...what was I even doing with this...Oh, right. Statefulness."
cat "binary c = new binary{0,0,0,0,0,0,0,0};
main(){ while(true){this.display_bool_array( c++, light.cube.white, light.cube.ghost_blue ); this.wait(100ms);} }" | luxbuf
loop_unroll(luxbuf) | luxc | luxbuf
luxexec -a(mbient) luxbuf
"And now we wait a little bit, just to see it roll..."
suspend luxexec
display_bool_array( luxbuf.c, light.sphere.green, light.sphere.red );
"And look at that, there's still the same data. In an entirely different display format."