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 ...