[Swift-devel] Problem with iterate
    Ben Clifford 
    benc at hawaga.org.uk
       
    Wed Feb 17 10:58:42 CST 2010
    
    
  
> I have put together this really simple iteration example, which I expected
> to work (and it used to work in the past):
mmm.
yeah, the static analysis of when array elements are allowed to be 
assigned doesn't work well there.
If anyone is looking at fixing it, I think its something like the iterate 
statement being tagged as a writer of "all of statePathFiles", which then 
conflicts with the first line being a partial writer of statePathFiles. 
If anyone is *really* look at fixing it, get rid of foreach and iterate 
and put in proper dataflow based iteration (map, foldr, whatever) such 
that arrays are single-assignment.
>         statePathFiles[0]=initFunc("hello");
> 
>         iterate it{
>                 trace(@strcat("Iteration: ",it));
>                 statePathFiles[it+1]=catFunc(statePathFiles[it]);
>         } until (it==0);
> }
> Please suggest  solutions for it .
probably the two solutions above are not what you're looking for.
but:
move the statePathFiles[0] assignment into the iterate loop, by saying 
something like the below (but you'll have to adjust the array indices too, 
I think, because you need to start one earlier now). something like this:
iterate it { 
  if(it==0) {  statePathFiles[0]=initFunc("hello"); } else
   {statePathFiles[it+1]=catFunc(statePathFiles[it]);}
  } until(it==0);
-- 
    
    
More information about the Swift-devel
mailing list