On 07/05/2017 04:38 PM, helxi wrote: >> ---- >> sequence!((a, n) => a[0] + 1)(1).take(10).writeln; >> // [2, 2, 2, 2, 2, 2, 2, 2, 2, 2] >> // because a[0] is always 1 >> >> recurrence!((a, n) => a[0] + 1)(1).take(10).writeln; >> // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >> // because a[0] refers to the previous value >> ---- > > Oh thank you. Just 2 follow-up questions: >> recurrence!((a, n) => a[0] + 1)(1).take(10).writeln; > 1. In the last example of reccurence, what does n in (a,n) refer to?
n is "the index of the current value". Each time the lambda is called, a[n] is what is being generated a[n-1] is the previous value a[0] is the same as a[n-1]? (I find this confusing) > 2. How would you chain until! with reccurence? For example I want to > compute 1, 10, 100, ..., (until the value remains smaller than 1000_000)? import std.stdio; import std.algorithm; import std.range; void main() { auto r = recurrence!((a, n) => a[n-1] * 10)(1); auto u = r.until!(a => a >= 1_000_000); writeln(u); } [1, 10, 100, 1000, 10000, 100000] Ali