== Quote from Andrei Alexandrescu ([email protected])'s article > I've updated my code and documentation to include series (as in math) in > the form of infinite ranges. Also series in closed form (given n can > compute the nth value without iterating) are supported as random-access > ranges. > Also Stride is provided. The Matrix container (speaking of scientific > computing with D!) will support various representational choices, most > importantly the ones endorsed by high-performance libraries. For Matrix, > Stride is an important component as I'm sure anyone who's ever written a > matrix knows. > http://ssli.ee.washington.edu/~aalexand/d/web/phobos/std_range.html > http://ssli.ee.washington.edu/~aalexand/d/web/phobos/std_algorithm.html > Back to series. Finally my dream has come true: I can define a decent > Fibonacci series clearly and efficiently in one line of code. No more > idiotic recursive function that takes exponential time to finish! > auto fib = series!("a[n-1] + a[n]")(1, 1); > // write 10 Fibonacci numbers > foreach (e; take(10, fib)) writeln(e); > This means: > * The state of the series consists of two values, which start as a[0] = > 1 and a[1] = 1. This state will be stored inside the returned object > in-situ (no dynamic allocation). > * The means to compute the n+1'th element given the n'th and the n-1'th > is a[n-1] + a[n]. > The series object takes care of everything - keeping score, rotating > buffers, advancing state, you name it. > Walter sent me examples of famous series (e.g. Taylor, approximations of > pi, etc.) that I want to put in as examples. I can't wait the next > release so I can share this all with you guys! > Feedback and suggestions welcome! (I know, I need to add the iota range > presto!) > Andrei
Is the code to this stuff posted anywhere yet? I'd be interested to read some of it. I actually learned a decent amount of template idioms by reading the old-school std.algorithm, so I'm curious how some of this stuff is implemented.
