@ingox Nice.
Once I added the semicolon-separated message args to hand off to expr, it didn't seem as pressing to allow expressions inside the conditions. At that point it just seemed easier to specify the loop length with a single floatarg and do whatever with "i" in the body.
I think this method of leveraging expr is probably useful for something like [array foreach]
[array foreach e, i;
e * 2;
i;
That is-- for each element of the list, output a list containing the current element multiplied by two, followed by the index.
But I guess you have to name the object something other than "array"...