A fresh look at the iterator pattern using FP/OOP
The C# programming language has built-in support for the iterator pattern using the foreach
loop construct. Any programmer worth his salt might have written code to iterate over a collection and apply some kind of transformation. To get things in perspective, let's globally write some code to compute the arithmetic mean (average) of a set of numbers.
double[] arr = { 2, 4, 4, 4 ,5, 5, 7, 9}; List<double> arrlist = arr.ToList(); double nsum = 0; foreach (var n in arr) { nsum += n; } double avg = nsum / arrlist.Count; Console.WriteLine(avg);
The preceding imperative code does the job really well, and it is quite readable. Let us explore whether we can improve the situation further. If you take a closer look, the code iterates through a collection, and applies some logic which is context-dependent. If we want to calculate the product of numbers, we need to write the same code by slightly...