Robert Jacques Wrote: > On Thu, 06 May 2010 22:46:42 -0400, Michel Fortin > <michel.for...@michelf.com> wrote: > > > On 2010-05-06 21:48:09 -0400, "Robert Jacques" <sandf...@jhu.edu> said: > > > >> On Thu, 06 May 2010 20:57:07 -0400, Michel Fortin > >> <michel.for...@michelf.com> wrote: > >> > >>> On 2010-05-06 19:02:03 -0400, Jason House > >>> <jason.james.ho...@gmail.com> said: > >>> > >>>> Don Wrote: > >>>> > >>>>> x[] = sin(y[]); > >>>> I strongly favor the first syntax since it matches how I'd write it > >>>> in a for loop. > >>>> i.e. I'd replace [] with [i]. > >>> This is the best way to see array operations I've read up to now: > >>> replace [] with [i], i being the current loop index. It's so simple > >>> to explain. > >>> > >>>> If there was a sin variant that took array input, then I'd expect > >>>> the line to be: > >>>> x[] = sin(y)[] > >>>> which would translate to creating a temporary to hold sin(y) array. > >>> Makes sense too. > >> this: > >> for(int i = 0; i < x.length; i++) { > >> x[i] = sin(y)[i]; > >> } > >> makes sense? > > > > Yes, if as stated by Jason there was a sin variant that took array input. > > > > That said, I'd expect the compiler to call sin(y) only once, so it'd be > > more like that: > > > > auto sinY = sin(y); > > for(int i = 0; i < x.length; i++) { > > x[i] = sinY[i]; > > } > > > > Ah, thank you for the clarification. I mis-read the first post. Although, > for sin(y)[] to work, the variant would have to return an array in > addition to taking one. > > hmm... > given > real foo(real value) {...} > and > real[] foo(real[] value) {...} > > what should happen with the follow line of code: > > x[] = foo(y[]) + z[];
That can be interpreted in either of the following ways: foreach(i) x[i] = foo(y[i]) + z[i]; OR auto F = foo(y[]); foreach(i) x[i] = F + z[i]; The 2nd would be a compile error, so it must be the first.