On Fri, 26 Feb 2010 03:58:59 -0500, Norbert Nemec
<[email protected]> wrote:
Robert Jacques wrote:
Well there is std.algorithm's map and reduce. Somehow, I feel slicing,
ranges/generators and array expressions should be able to handle this.
For example: \sum_i i*a_i*b_i-1 => sum(iota * a * b[1..$]) But then
again I'm having trouble thinking of real examples off the top of my
head.
In fact, that is the way you would do it in e.g. Python/NumPy. It works
fine for many common cases but does not scale up to more complex
situations. The mathematical sum notation scales up arbitrarily and
remains clear.
I would want to offer both options and leave it to the user to choose
the more appropriate notation.
That sounds sensible. However, extensive experience in Matlab has taught
me that resorting to custom for-loop indicates you've failed to
sufficiently think in arrays. :)
Take, for example, your composition example from the other thread:
sum(i)( a[i] * sum(j)(b[i,j]*c[j]) ) => sum(a.*(b'*c)) or
a.*sum(b.*(c*ones(1,length(c)))) ,1)
or something like that. (As an aside, having a more efficient syntax for
broadcasts, instead of having to use the outer product all the time, would
be nice)
Is there some example of a complex case you can post? I think we'll all
think of better solutions with a goal in sight.