A new spin on the template method pattern using FP/OOP
In this section, we will demonstrate how the template method pattern can be implemented using imperative programming techniques, and we will refactor the code to write an FP one. As a concrete example, we plan to use the computation of Internal rate of return (IRR) as a running example.
To focus on the essentials, let us quickly hack an engine to compute the IRR, given a series of payments (List<double>
), the rate, and the period. As a first step, we need to compute the present value of a series of payments by using the technique of discounting. The following routine computes the present value of the series of payments:
public static double CashFlowPVDiscreteAnnual( List<double> arr, double rate, double period) { int len = arr.Count; double PV = 0.0; for (int i = 0; i < len; ++i) PV += arr[i] / Math.Pow((1+rate/100), i); return PV; }
Note
The definition of IRR goes...